1. 程式人生 > >HashMap底層原理——儲存鍵值對底層原理

HashMap底層原理——儲存鍵值對底層原理

HashMap底層是由雜湊表實現的,是非常重要的資料結構,雜湊表的基本結構就是“陣列+連結串列”。 1:陣列:佔用空間連續,定址容易,查詢速度快,但是,增加和刪除效率非誠低 2:連結串列:佔用空間不連續,定址困難,查詢速度慢,但是,增加和刪除效率非常高。 HashMap 剛好結合了陣列和連結串列的優點

HashMap 底層是由多個Entry節點物件組成(JDK1.6)/  多個Node節點組成(1.8),entry[

]陣列是構成HashMap的核心陣列,又稱為 “位桶陣列”,Entry / Node 的原始碼如下:

 

一個Entry / Node 物件儲存了:        1; key:鍵物件,value : 值物件        2:next:下一個節點        3:hash:鍵物件的hash值 每一個Entiry / Node 是一個單項鍊表,如下圖:

然後,我們畫出Entry[] 陣列的結構(這也是 HashMap 的結構) 儲存資料過程 put(key,value):

當新增一個元素的時候,首先計算key的hash值,以此確定陣列中的位置,但是可能存在同一個hash值得元素已經被放在陣列同一位置,這時就新增到同一hash值元素的 後面,他們在陣列同一個位置,就形成了連結串列,同一個連結串列上的hash值是相同的,所以陣列存放的列表,JDK8中,當連結串列長度大於8時,連結串列就轉換成紅黑樹,這樣大大提高查詢效率。