JDK1.7 HashMap源碼分析

本文是作者原創,版權歸作者所有.若要轉載,請註明出處.

話不多說,開始吧! 

我們知道,JDK1.7中  HashMap 採用的數據結構 = 數組 + 單鏈表

鏈表Entry

 

 

HashMap的常用屬性

 

 

HashMap的構造方法

 

 

put方法(主)

 

 1.初始化

 

 1-1 將傳入的容量轉化為>傳入容量大小的最小的2的次冪(詳見位運算那篇文章)

 

 

2.key=null的處理(addEntry方法後面再說)

3.根據key計算hash值

 

 

4.根據hash值 獲得 key在應存放的數組Table中位置

 

 

5.遍歷該數組元素為頭結點的鏈表,逐個判斷該key對應的值是否已存在

 

 

6.添加一個元素

 

 

6-1.先判斷容量是否足夠,若容量不足,則進行擴容(2倍)

 

 

6-1-1.將舊數組上的鍵值對轉移到新table中,從而完成擴容

 

 

6-2.添加一個新的元素到數組

 

 

get方法

 

 

1.key為null

 

 

2.key為其他元素

 

 

remove方法

 

細節如下:

 

 

 

至此,JDK1.7 HashMap源碼分析,感謝觀看