java ifpresent_java映射的merge、compute、computeIfAbsent、computeIfPresent的使用
merge、compute、computeIfAbsent、computeIfPresent是java8中的語法。
merge:通過構建BiFunction或則是調用java中的一些函數來操作merge參數中的變量。
compute:通過構建BiFunction或則使用lambda表達式來操作參數中的變量,這里無論key是否存在都會執行后面的方法。
computeIfAbsent,computeIfPresent:前一個是當key不存在是則執性后面的方法,后一個是存在時執行后面的方法。
1 packagejihe;2
3 importjava.util.HashMap;4 importjava.util.Map;5 importjava.util.function.BiFunction;6
7 public classMapMain {8 public static voidmain(String[] args) {9 Map myMap = new HashMap<>();10 String keyA = "A";11 String keyB = "B";12 String keyC = "C";13 String keyD = "D";14 String keyE = "E";15 String keyF = "F";16 String keyG = "G";17 String keyH = "H";18 myMap.put(keyA, "str01A");19 myMap.put(keyB, "str01B");20 myMap.put(keyC, "str01C");21
22 System.out.println("myMap initial content:"+myMap);23
24 myMap.merge(keyA, "merge01", String::concat);25 myMap.merge(keyD, "merge01", String::concat);26 System.out.println("Map merge demo content:"+myMap);27
28 BiFunction biFunc = new BiFunction(){29 @Override30 publicString apply(String t, String u) {31 String result =t;32 if (t == null) {33 result =u;34 }35 else{36 result += "," +u;37 }38 returnresult;39 }40 };41
42 myMap.merge(keyA, "BiFuncMerge01", biFunc);43 myMap.merge(keyE, "BiFuncMerge01", biFunc);44 System.out.println("merge"+myMap);45
46 String msg = "msgCompute";47 myMap.compute(keyB, (k, v) -> (v == null) ?msg : v.concat(msg));48 myMap.compute(keyF, (k, v) -> (v == null) ?msg : v.concat(msg));49 System.out.println("compute"+myMap);50
51 myMap.computeIfAbsent(keyC, k ->genValue(k));52 myMap.computeIfAbsent(keyG, k ->genValue(k));53 System.out.println("computeIfAbsent"+myMap);54
55 myMap.computeIfPresent(keyC, biFunc);56 myMap.computeIfPresent(keyH, biFunc);57 System.out.println("computeIfPresent"+myMap);58 }59
60 staticString genValue(String str) {61 System.out.println("===");62 return str + "2";63 }64
65 }
輸出的結果為:
myMap initial content:{A=str01A, B=str01B, C=str01C}
Map merge demo content:{A=str01Amerge01, B=str01B, C=str01C, D=merge01}
merge{A=str01Amerge01,BiFuncMerge01, B=str01B, C=str01C, D=merge01, E=BiFuncMerge01}
compute{A=str01Amerge01,BiFuncMerge01, B=str01BmsgCompute, C=str01C, D=merge01, E=BiFuncMerge01, F=msgCompute}
===
computeIfAbsent{A=str01Amerge01,BiFuncMerge01, B=str01BmsgCompute, C=str01C, D=merge01, E=BiFuncMerge01, F=msgCompute, G=G2}
computeIfPresent{A=str01Amerge01,BiFuncMerge01, B=str01BmsgCompute, C=C,str01C, D=merge01, E=BiFuncMerge01, F=msgCompute, G=G2}
總結
以上是生活随笔為你收集整理的java ifpresent_java映射的merge、compute、computeIfAbsent、computeIfPresent的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 线程的退出 java_(转)Java结束
- 下一篇: java 判断语句 性能_前端性能优化: