1. 程式人生 > >HashMap中key為null時存到哪裡去了

HashMap中key為null時存到哪裡去了

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.csdn.net/guogaoan/article/details/38385543