HashMap的底層實現原理(JDK7版本)

2021-10-01 02:37:04 字數 571 閱讀 9900

new hashmap();

例項化後會在底層建立乙個長度為16的entry table陣列。

…可能已經執行的put…

map put(key1, value1);

首先呼叫key1所在類的hashcode()方法,計算key1的雜湊值,此雜湊值經過某種演算法計算以後,得到在entry陣列中存放的位置;

如果此位置上的資料為空,即該位置上沒有資料,此時key1-value1新增成功;

如果此位置上的資料不為空,意味著此位置上存在乙個或多個(以鍊錶形式存在)資料,需要比較當前key1和已存在的乙個或多個資料的key值的雜湊值,如果key1的雜湊值與已存在的多個資料key值的雜湊值都不相同,此時key1-value1新增成功;

如果key1雜湊值與已經存在的乙個資料(設為key2-value2)的key值的雜湊值相同,繼續呼叫key1所在類的equals()方法,如果equals()返回false,此時key1-value1新增成功;

如果equals()返回true,使用value1替換value2,即此時的put()方法具有修改功能;

注:預設擴容為原來容量的2倍,並將原有資料複製過來。

hashmap底層實現原理

每次初始化hashmap都會構造乙個table陣列,而table陣列的元素為entry節點。static class entryimplements map.entryhashmap也可以說是乙個陣列鍊錶,hashmap裡面有乙個非常重要的內部靜態類 entry,這個entry非常重要,它裡面包含了...

HashMap底層實現原理

hashmap map new hashmap 在例項化以後,底層建立了長度為16的一維陣列entry table 已經執行過put操作.map.put key1 value1 呼叫key1所在類的hashcode 計算key1雜湊值,此雜湊值經過某種演算法計算後,得到在entry陣列中的存放位置 ...

HashMap底層實現原理

一 jdk1.7中hashmap的底層實現原理 首先,當我們通過hashmap的構造方法建立乙個hashmap物件時,底層就會建立乙個entry型別的一維陣列 預設初始化長度為16 當我們執行put操作的時候,會呼叫key所屬類的hashcode方法計算出key的hash值,然後將hash值通過雜湊...