From c504f5dc2411eefeec4d8d6a0d73931ccd5c4f50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=AC=E5=BA=9C=E5=BC=BA?= <8569561+fuqiangma@user.noreply.gitee.com> Date: Wed, 1 Feb 2023 22:40:34 +0800 Subject: [PATCH] haha --- mergedemo/.idea/.gitignore | 8 +++ mergedemo/.idea/compiler.xml | 14 +++++ mergedemo/.idea/jarRepositories.xml | 20 +++++++ mergedemo/.idea/misc.xml | 14 +++++ mergedemo/mergedemo.iml | 2 + mergedemo/pom.xml | 20 +++++++ .../java/com/woniu/mergedemo/MainTest.java | 52 ++++++++++++++++++ .../com/woniu/mergedemo/StudentScore.java | 12 ++++ .../com/woniu/mergedemo/MainTest.class | Bin 0 -> 2927 bytes .../com/woniu/mergedemo/StudentScore.class | Bin 0 -> 2222 bytes 10 files changed, 142 insertions(+) create mode 100644 mergedemo/.idea/.gitignore create mode 100644 mergedemo/.idea/compiler.xml create mode 100644 mergedemo/.idea/jarRepositories.xml create mode 100644 mergedemo/.idea/misc.xml create mode 100644 mergedemo/mergedemo.iml create mode 100644 mergedemo/pom.xml create mode 100644 mergedemo/src/main/java/com/woniu/mergedemo/MainTest.java create mode 100644 mergedemo/src/main/java/com/woniu/mergedemo/StudentScore.java create mode 100644 mergedemo/target/classes/com/woniu/mergedemo/MainTest.class create mode 100644 mergedemo/target/classes/com/woniu/mergedemo/StudentScore.class diff --git a/mergedemo/.idea/.gitignore b/mergedemo/.idea/.gitignore new file mode 100644 index 0000000..c68e6c2 --- /dev/null +++ b/mergedemo/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Datasource local storage ignored files +/../../../../:\java project\mergedemo\.idea/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/mergedemo/.idea/compiler.xml b/mergedemo/.idea/compiler.xml new file mode 100644 index 0000000..b15642a --- /dev/null +++ b/mergedemo/.idea/compiler.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/mergedemo/.idea/jarRepositories.xml b/mergedemo/.idea/jarRepositories.xml new file mode 100644 index 0000000..712ab9d --- /dev/null +++ b/mergedemo/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/mergedemo/.idea/misc.xml b/mergedemo/.idea/misc.xml new file mode 100644 index 0000000..4b661a5 --- /dev/null +++ b/mergedemo/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/mergedemo/mergedemo.iml b/mergedemo/mergedemo.iml new file mode 100644 index 0000000..78b2cc5 --- /dev/null +++ b/mergedemo/mergedemo.iml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/mergedemo/pom.xml b/mergedemo/pom.xml new file mode 100644 index 0000000..93accab --- /dev/null +++ b/mergedemo/pom.xml @@ -0,0 +1,20 @@ + + + 4.0.0 + + com.woniu + mergedemo + 1.0-SNAPSHOT + + + + org.projectlombok + lombok + 1.18.24 + + + + + \ No newline at end of file diff --git a/mergedemo/src/main/java/com/woniu/mergedemo/MainTest.java b/mergedemo/src/main/java/com/woniu/mergedemo/MainTest.java new file mode 100644 index 0000000..3282b81 --- /dev/null +++ b/mergedemo/src/main/java/com/woniu/mergedemo/MainTest.java @@ -0,0 +1,52 @@ +package com.woniu.mergedemo; + + +import java.util.*; + +/** + * Java 8 中 Map的一个骚操作!好用到爆!! + * + * 假设我们有这么一段业务逻辑, + * 我有一个学生成绩对象的列表, + * 对象包含学生姓名、科目、科目分数三个属性, + * 要求求得每个学生的总成绩。 + */ +public class MainTest { + + public static void main(String[] args) { + List studentScoreList = Arrays.asList( + new StudentScore("张三", "语文", 70), + new StudentScore("张三", "数学", 70), + new StudentScore("张三", "英语", 65), + new StudentScore("李四", "语文", 68), + new StudentScore("李四", "数学", 70), + new StudentScore("李四", "英语", 90), + new StudentScore("王五", "语文", 80), + new StudentScore("王五", "数学", 85), + new StudentScore("王五", "英语", 70) + ); + + Map studentScoreMap = new HashMap<>(); + studentScoreList.forEach(studentScore -> { + if (studentScoreMap.containsKey(studentScore.getStuName())) { + studentScoreMap.put(studentScore.getStuName(), studentScoreMap.get(studentScore.getStuName()) + studentScore.getScore()); + } else { + studentScoreMap.put(studentScore.getStuName(), studentScore.getScore()); + } + }); + + + Map studentScoreMap2 = new HashMap<>(); + + studentScoreList.forEach(studentScore -> studentScoreMap2.merge( + studentScore.getStuName(), + studentScore.getScore(), + (oldValue, newValue) -> oldValue + newValue)); + //merge() 方法会先判断指定的 key 是否存在,如果不存在,则添加键值对到 hashMap 中。 + + + } + + + +} diff --git a/mergedemo/src/main/java/com/woniu/mergedemo/StudentScore.java b/mergedemo/src/main/java/com/woniu/mergedemo/StudentScore.java new file mode 100644 index 0000000..72ec939 --- /dev/null +++ b/mergedemo/src/main/java/com/woniu/mergedemo/StudentScore.java @@ -0,0 +1,12 @@ +package com.woniu.mergedemo; + +import lombok.AllArgsConstructor; +import lombok.Data; + +@Data +@AllArgsConstructor +public class StudentScore { + private String stuName; + private String subject; + private int score; +} diff --git a/mergedemo/target/classes/com/woniu/mergedemo/MainTest.class b/mergedemo/target/classes/com/woniu/mergedemo/MainTest.class new file mode 100644 index 0000000000000000000000000000000000000000..b88d43146a280a1cd2d121f1e8da2293d41257fa GIT binary patch literal 2927 zcma)8+jA3T6#somn@!U#-3D5&V!?t*3k^2`O+`zgG?ErHrM2LNubXYUG}(>2n_|7+ z5mCkmb;dzwd|>p65niAab$rkl$3Fwmzryi+yBo5R06uj0J7>@3cYf!buleJjrC$K- z!uc51VvmHqQ9K^S6ETF4j$$B+C!^RG#ZxgnjX??fV`#;mIJu0pB7Fg`S@9T+ zp%Y_qIz88l9L6Oa6YmM}m=xch7pEx+$0eL#hz#h4?(Aa-Cz2BkO+#j0V`$InhBj6y zO>5RTpDvOno;6iooZyx&WMA3j%<4A7`mAb}Qm0KrucS(vRnYQU$xMxM-5A$wCrwdH zbY|#EoXDQy^E_4LMj@4REZr!i-K^XyP@LrrJ~Jq`Q^{+FlT%Gg%j&j6DlbgM(Tgde zp%m>wt5IGSHMqH4BT|q}T_jTNAV~FPEtIRJ?Fx8{6ax)w%mtvO_fd-70XNDp;EBO{ z1DcHCXa&u39ove$G@a)?f~lVE47(EbkTM+F9Inn0dcVuD zoLR9{ZCDp`&{l10zhGC!Iy}VC-KhUTZfMSK{q)_<#j|wy`^QVSzd9p4Um)rBmzQr{ z`d+BdU7;^R^X>Ut7cS7@uk+__E`1^4MHw&QWrmJgKS#JdO8}{*`%Tla9gCMoHD}h$ z+wBpYRKV#qtw5ELhbCc0Mgg;=(`B5(oQxt$G7Ojs%A|cofhEI+BcUQ=9;d6h+`jo; zlJP1QWW0vgWxOHW-vs4f*QoL;MFg)l?nkCiX)4Wb!f)(7X2Rc!jA*9k?GEsuW$^`C zkqEcF71&g_OJ4AFGB7jlUc~Sg-e%|w=B(OI#IOeMFl<52+#LmXjM(a zq3g&#tP#eBGjyD&Ce|4?H$c%aXjC_x3DFkvELUjb-k0$KK9;c)+hnA~<19X*o2#}t zx-oCgX{oGxLDHJ@8Lm2}MVMMkHA%v!G^1J5oU71Y${EAZtf3;eZH?CE&mcTMo_Ar4 za3f#T>>kfC9bnGi#DJ#Gah(2F1kL~dM=$05eS_Tjk%xG(nA07NW+6a>SRLeOXcl-R}`s zj*|TWSC)LaY9IAwNjdI*S3HLnayaTKJdc)mL^SE0~f$0FiO zST10$Xu_}PoUHXJ?n3D%hYbXJBRVKqH#v8CAzTn7QtP*42N)%yZS)g;?k5^{6J1AF z2wx-V3chA#NTj=pRRYCHf^i+I!j{1E5x5msY}WI^Kr`a4LThy2rF|8xXL@$A3G`vyY* literal 0 HcmV?d00001 diff --git a/mergedemo/target/classes/com/woniu/mergedemo/StudentScore.class b/mergedemo/target/classes/com/woniu/mergedemo/StudentScore.class new file mode 100644 index 0000000000000000000000000000000000000000..bc37952aa962f5b47bbd0ae416cbfcdd74f23296 GIT binary patch literal 2222 zcma)6+in|G6kW%j@r<2Go0wec)`heL@Fi|27z%b0Xq%L#Bx$KbpcO)$IHSbHmtcF~ zUwGk-yyO8S;z}SPcqtMe!dFnr+B0K2aV$~EK45kE0;U-pvttr^%&0B@wLbHH}-thuJ6v5+RaLRw|7QE9k9qqe(Zlsu0_C+NEyXL@GTjQoGsM zq5IjjO5NFTYuiq9)84Ln=QPT8b<1v6L=Qe{?Y&A%;qqF!QJep^QLni3HK)1j>^QXs z(YQNKydS-jvj(VT_dSLD%=$d>oq1o6>AI{HD@#p;E83mlRS%*g4IY$4IQy zaGPc4Rz*5Ee!L-9WNIu-VcNnuSrRy}F!O(XwD2yn7GA}yg$qbp$cTDbq-&T}m>wL) z8*Zh#<1{TS;!`%}ID}Nd^P+_;EXk`5};T+jG9TbH)5fTY4${{+8%3Y;M6 zzP-Qi)OQqeL-;v8>j5whW|Gr$iodQImv})Zd85M!30ssxLYTLcGwvf$!Uflh)aJP> z?t12Ds2@GIm$^o~k5Rlr+43DQ!{ne$`nV1ThX#XVLxb6hA;ICpfs;pu2ET^agWv+o z3JK0k_6X{yf#`@AJ>`1@xTPi`M9O_*c%IOU<`F_APYP+S!bBg>g(HMtG>