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源碼分析,感謝觀看