HashMap中key為null時存到哪裡去了
阿新 • • 發佈:2018-12-23
hashMap是根據key的hashCode來尋找存放位置的,那當key為null時, 怎麼儲存呢?
在put方法裡頭,其實第一行就處理了key=null的情況。
可以看到,前面那個for迴圈,是在talbe[0]連結串列中查詢key為null的元素,如果找到,則將value重新賦值給這個元素的value,並返回原來的value。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]連結串列的表頭。
轉載地址:http://blog.csdn.net/guogaoan/article/details/38385543