HashMap底層原理——儲存鍵值對底層原理
阿新 • • 發佈:2018-12-13
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 是一個單項鍊表,如下圖:
當新增一個元素的時候,首先計算key的hash值,以此確定陣列中的位置,但是可能存在同一個hash值得元素已經被放在陣列同一位置,這時就新增到同一hash值元素的 後面,他們在陣列同一個位置,就形成了連結串列,同一個連結串列上的hash值是相同的,所以陣列存放的列表,JDK8中,當連結串列長度大於8時,連結串列就轉換成紅黑樹,這樣大大提高查詢效率。