map compute

map compute方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92

public class MapMethods {

public static void main(String[] args) {
testMapCompute();
// testMapComputeIfPresent();
// testMapComputeIfAbsent();
}

public static void testMapComputeIfAbsent() {
Map<String, String> map = new LinkedHashMap<>();
System.out.println("测试场景:computeIfAbsent");
map.put("k1", "v1");
map.put("k2", "v2");
map.put("k3", "v3");
System.out.println("测试指定key1存在,返回值一致");
map.computeIfAbsent("k1", k -> "v1");
System.out.println("测试指定key2存在,返回值不一致");
map.computeIfAbsent("k2", k -> "VV2");
System.out.println("测试指定key3存在,返回值为NULL");
map.computeIfAbsent("k3", k -> null);
System.out.println("测试指定key4不存在,返回值NULL");
map.computeIfAbsent("k4", k -> null);
System.out.println("测试指定key5不存在,返回值不为NULL");
map.computeIfAbsent("k5", k -> "VV5");
System.out.print("输出结果:" + map);
System.out.println("结论如下:");
System.out.println("测试指定key存在,返回值一致:不添加不删除");
System.out.println("测试指定key存在,返回值不一致:不添加不删除");
System.out.println("测试指定key存在,返回值为NULL:不添加不删除");
System.out.println("测试指定key不存在,返回值NULL:不添加不删除");
System.out.println("测试指定key不存在,返回值不为NULL:添加数据,key:指定的key,value:指定的value");
}

public static void testMapComputeIfPresent() {
Map<String, String> map = new LinkedHashMap<>();
System.out.println("测试场景:computeIfPresent");
map.put("k1", "v1");
map.put("k2", "v2");
map.put("k3", "v3");
System.out.print("测试指定key存在,返回值一致:");
map.computeIfPresent("k1", (k, v) -> printLogAndReturnParam(k, v, "v1"));
System.out.print("测试指定key存在,返回值不一致:");
map.computeIfPresent("k2", (k, v) -> printLogAndReturnParam(k, v, "VV2"));
System.out.print("测试指定key存在,返回值为NULL:");
map.computeIfPresent("k3", (k, v) -> printLogAndReturnParam(k, v, null));
System.out.println("测试指定key不存在,返回值NULL:");
map.computeIfPresent("k4", (k, v) -> printLogAndReturnParam(k, v, null));
System.out.println("测试指定key不存在,返回值不为NULL:");
map.computeIfPresent("k5", (k, v) -> printLogAndReturnParam(k, v, "VV5"));
System.out.print("输出结果:" + map);
System.out.println("结论如下:");
System.out.println("测试指定key存在,返回值一致:value保持不变");
System.out.println("测试指定key存在,返回值不一致:value使用返回值");
System.out.println("测试指定key存在,返回值为NULL:删除该条数据");
System.out.println("测试指定key不存在,返回值NULL:不添加不删除");
System.out.println("测试指定key不存在,返回值不为NULL:不添加不删除");
}

public static void testMapCompute() {
Map<String, String> map = new LinkedHashMap<>();
System.out.println("测试场景:compute");
map.put("k1", "v1");
map.put("k2", "v2");
map.put("k3", "v3");
System.out.print("测试指定key存在,返回值一致:");
map.compute("k1", (k, v) -> printLogAndReturnParam(k, v, "v1"));
System.out.print("测试指定key存在,返回值不一致:");
String compute = map.compute("k2", (k, v) -> printLogAndReturnParam(k, v, "VV2"));
System.out.println("compute = " + compute);
System.out.print("测试指定key存在,返回值为NULL:");
map.compute("k3", (k, v) -> printLogAndReturnParam(k, v, null));
System.out.print("测试指定key不存在,返回值NULL:");
map.compute("k4", (k, v) -> printLogAndReturnParam(k, v, null));
System.out.print("测试指定key不存在,返回值不为NULL:");
String compute1 = map.compute("k5", (k, v) -> printLogAndReturnParam(k, v, "VV5"));
System.out.println("compute1 = " + compute1);
System.out.print("输出结果:" + map);
System.out.println("结论如下:");
System.out.println("测试指定key存在,返回值一致:value保持不变");
System.out.println("测试指定key存在,返回值不一致:value使用返回值");
System.out.println("测试指定key存在,返回值为NULL:删除该条数据");
System.out.println("测试指定key不存在,返回值NULL:不添加不删除");
System.out.println("测试指定key不存在,返回值不为NULL:添加数据,key:指定的key,value:返回值");
}

public static String printLogAndReturnParam(String k, String v, String result) {
System.out.print("k-" + k + " ");
System.out.println("v-" + v);
return result;
}


参考链接

https://blog.csdn.net/zhaojiyuan1024/article/details/124781002