HashMap原始碼 get方法

2021-08-20 14:58:32 字數 580 閱讀 4664

環境:jdk1.8

get方法原始碼如下:

public v get(object key)

hash方法原始碼如下:

static final int hash(object key)

getnode方法原始碼如下:

//傳入引數:1.根據key雜湊計算得到的雜湊值 2.key值

final nodegetnode(int hash, object key)

while ((e = e.next) != null);}}

//沒有找到對應value則返回null

return null;

}

總結:

1.get方法的引數key允許為null值,計算得到的雜湊值為0

2.如果存在雜湊雜湊衝突的資料,且鍊錶第乙個元素不是key對應的value,則需要判斷鍊錶是否是紅黑樹型別

3.get方法的返回值允許為null值

4.紅黑樹的具體操作後續單獨寫一章節學習分析

HashMap原始碼之get與put方法

hashmap是基於陣列和鍊錶來儲存鍵值對物件的,我們簡單看下get和put方法的原始碼。1 我們呼叫put方法來儲存鍵值對時,它先呼叫hash方法來計算hashcode,然後用hashcode和entry陣列的大小來做按位與操作,求出所在的entry陣列的下標位置。通過key與下標所在的entry...

HashMap原始碼 擴容resize方法

環境 jdk1.8 resize方法原始碼如下 final node resize 初始化新容量值為舊容量值的2倍,然後與最大容量值比較,當新容量值小於最大容量值,且舊容量值大於等於預設初始化容量值,這時也對新閾值賦值為舊閾值的2倍 else if newcap oldcap 1 maximum c...

HashMap原始碼系列 HashMap的屬性

public class hashmap extends abstractmap implements map,cloneable,serializable容載因子 容載因子越大,table陣列中儲存的資料越密集,碰撞的可能性就越大。容載因子越小,儲存越稀疏,碰撞的可能性就越小,不過浪費儲存空間。轉...