HashMap的putIfAbsent()方法

HashMap的putIfAbsent()方法

    public static void main(String[] args) {
        HashMap<String, Object> hashMap = new HashMap<>();
        Object obj = hashMap.putIfAbsent("A", null);
        if (obj == null) {
            System.out.println("Shit : NPE!");
        }
        hashMap.putIfAbsent("A",16);
        hashMap.putIfAbsent("A",17);
        hashMap.putIfAbsent("B", 100);
        hashMap.putIfAbsent("B", 150);
        Integer i = (Integer)hashMap.putIfAbsent("B", 200);
        hashMap.put("C", 222);
        hashMap.put("C", 23);
        System.out.println(hashMap);
        System.out.println(i);
    }
// 运行结果 Shit : NPE! {A=16, B=100, C=23} 100

#

来源

在此方法出现在HashMap里面之前,JDK给出的解决方案是ConcurrentMap的putIfAbsent()方法。
出现在HashMap里面的这个putIfAbsent()方法与之前的解决方法具有相同的功能,

在上面的测试代码中

  1. 当value为null的时候,putIfAbsent()方法会覆盖null值,直到value不为null为止
  2. 当value初始值不为null的时候,putIfAbsent()保证返回值始终是唯一的,并且是多线程安全的
  3. putIfAbsent()是有返回值的,应该对他的返回值进行非空判断
  4. 2和3主要应用在单例模式中
    原文作者:简简单单OnlineZuozuo
    原文地址: https://blog.csdn.net/qq_15071263/article/details/77542878
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞