本篇接着上篇来, 继续学习java8新特性
Java 8 简明教程
Map
putIfAbsent
代码展示
Map<String, Object> hashMap = new LinkedHashMap<>();
hashMap.put("val_1", 1);
hashMap.put("val_2", 2L);
hashMap.put("val_3", null);
System.out.println(hashMap);
Object val_1 = hashMap.putIfAbsent("val_1", 111);
System.out.println(val_1);
Object val_3 = hashMap.putIfAbsent("val_3", 3);
System.out.println(val_3);
Object val_4 = hashMap.putIfAbsent("val_4", 4);
System.out.println(val_4);
System.out.println(hashMap);
输出:
{val_1=1, val_2=2, val_3=null}
1
null
null
{val_1=1, val_2=2, val_3=3, val_4=4}
对比
在之前如果我们存储一个key时, 需要判断是否存在, 不存在时添加. 我们需要先判断再添加. 在jdk1.8之后, 我们只需要
putIfAbsent(k,v)
方法就可以完成.
if (!hashMap.containsKey("val_3")) {
hashMap.put("val_3", "val_3");
}
方法详解
hashMap.putIfAbsent("val_1", 111);
, 存在key时, 如果 value != null, 不替换, 返回原本存储的 valuehashMap.putIfAbsent("val_3", 3);
, 存在key时, 如果 value == null, 替换value, 返回null
hashMap.putIfAbsent("val_4", 4);
, 不存在key时, 直接put进去.