HashMap原始碼分析

2022-05-31 21:21:16 字數 549 閱讀 4038

final v putval(int hash, k key, v value, boolean

onlyifabsent,

boolean

evict)

if (e.hash == hash &&((k = e.key) == key || (key != null &&key.equals(k))))

break

; p =e;}}

//對於i 情況的後續操作:發現key已存在,直接用新value覆蓋舊value&返回舊value

if (e != null)

}++modcount;

//插入成功後,判斷實際存在的鍵值對數量size > 最大容量

//如果大於則進行擴容

if (++size >threshold)

resize();

//插入成功時會呼叫的方法(預設實現為空)

afternodeinsertion(evict);

return

null

;}

HashMap原始碼分析

public hashmap int initialcapacity,float loadfactor 2 接下來是重要的put方法,put方法用於將鍵值對儲存到map中,讓我們來具體分析一下。public v put k key,v value if key null 若key為null,則將va...

HashMap 原始碼分析

1 getentry object key 方法 final entrygetentry object key return null 根據key的hash值計算出索引,得到table中的位置,然後遍歷table處的鍊錶 for entrye table indexfor hash,table.le...

HashMap原始碼分析

public v put k key,v value if key null return putfornullkey value int hash hash key int i indexfor hash,table.length for entrye table i e null e e.nex...