環境: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陣列中儲存的資料越密集,碰撞的可能性就越大。容載因子越小,儲存越稀疏,碰撞的可能性就越小,不過浪費儲存空間。轉...