我们知道,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