欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

java ifpresent_java映射的merge、compute、computeIfAbsent、computeIfPresent的使用

发布时间:2025/3/19 编程问答 45 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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的使用的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。