compute
Map<String, String> map = new HashMap<>();
map.put("name","zhangSan");
// key存不存在都返回最新的
String val = map.compute("name", (k,v) -> "liSi"); // 返回: liSi
String val2 = map.compute("age", (k,v) -> "18"); // 返回 18
computeIfAbsent
Map<String, String> map = new HashMap<>();
map.put("name","zhangSan");
// key存在时返回存在的值,不存在时返回新值
String val = map.computeIfAbsent("name", k -> "liSi"); // 返回: zhangSan
String val2 = map.computeIfAbsent("age", k -> "18"); // 返回 18
putIfAbsent
Map<String, String> map = new HashMap<>();
map.put("name","zhangSan");
// key存在返回旧值,如果没有则返回null
String val = map.putIfAbsent("name", "liSi"); // 返回: zhangSan
String val2 = map.putIfAbsent("age", "18"); // 返回 null