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();
}
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; }
|