HashMap多个key为null值后多个数据变化结果

我们知道,HashMap允许有 null 的 key 和 null 的 value,但是当加入多个null key时,后面的数据会覆盖前面的数据。实验如下:

源码

 public static void main(String[] args) {
    
    

        HashMap<Integer,String> hashMap = new HashMap<>();
        hashMap.put(1,"aa");
        hashMap.put(null,"dd");
        hashMap.put(null,"ee");

        HashMap<Integer,String> target = new HashMap<>();
        target.put(2,"bb");
        target.put(3,"cc");

        target.putAll(hashMap);

        System.out.println(target.get(null));
    }

我们DUG一下:
在这里插入图片描述
上面的代码我们看到hashMap中加入了第一个元素 1:“aa”,继续Step Into。
在这里插入图片描述
上面的代码可以看到加入了第二个元素,即 null:“dd”。继续Step Into。
在这里插入图片描述
注意看hashMap对象的大小,不仅没变(size=2),而且第二个元素变为“ee”了,哈哈,上一步的“dd”哪去了??读者可以自己思考一下,我也不清楚,哈哈!

HashMap允许有null key,但是不能有多个null key,如果有,则后面的值覆盖前面的值。而且没有顺序。线程不安全,所以性能高一些。

分析到此结束!88

猜你喜欢

转载自blog.csdn.net/qq_37950196/article/details/107902760