1. 程式人生 > >HashMap的原始碼,實現原理,底層結構

HashMap的原始碼,實現原理,底層結構

總的來說,HashMap就是陣列+連結串列的組合實現,每個陣列元素儲存一個連結串列的頭結點,本質上來說是雜湊表“拉鍊法”的實現。

HashMap的連結串列元素對應的是一個靜態內部類Entry,Entry主要包含key,value,next三個元素

主要有put和get方法,put的原理是,通過hash%Entry.length計算index,此時記作Entry[index]=該元素。如果index相同

就是新入的元素放置到Entry[index],原先的元素記作Entry[index].next

get就比較簡單了,先遍歷陣列,再遍歷連結串列元素。

null key總是放在Entry陣列的第一個元素

解決hash衝突的方法:鏈地址法

再雜湊rehash的過程:確定容量超過目前雜湊表的容量,重新調整table 的容量大小,當超過容量的最大值時,取

Integer.Maxvalue