本篇接着上篇来, 继续学习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, 不替换, 返回原本存储的 value
  • hashMap.putIfAbsent("val_3", 3);, 存在key时, 如果 value == null, 替换value, 返回 null
  • hashMap.putIfAbsent("val_4", 4);, 不存在key时, 直接put进去.