hashMap是根据key的hashCode来寻找存放位置的,那当key为null时, 怎么存储呢?
在put方法里头,其实第一行就处理了key=null的情况。
if (key == null)
return putForNullKey(value);
//那就看看这个putForNullKey是怎么处理的吧。
private V putForNullKey(V value) {
for (Entry<K,V> e = table[0]; e != null; e = e.next) {
if (e.key == null) {
V oldValue = e.value;
e.value = value;
e.recordAccess(this);
return oldValue;
}
}
modCount++;
addEntry(0, null, value, 0);
return null;
}
可以看到,前面那个for循环,是在talbe[0]链表中查找key为null的元素,如果找到,则将value重新赋值给这个元素的value,并返回原来的value。
如果上面for循环没找到则将这个元素添加到talbe[0]链表的表头。
转载地址:http://blog.youkuaiyun.com/guogaoan/article/details/38385543
本文深入探讨了HashMap如何处理键为null的情况。通过分析源代码,揭示了HashMap在遇到null键时,将其存储在table[0]链表的机制。若链表中已存在null键,则更新其值;否则,在链表头部插入新元素。
7071

被折叠的 条评论
为什么被折叠?



