1. 程式人生 > >java中Map和Set的底層分析

java中Map和Set的底層分析

1.HashSet底層是使用HashMap實現的。當使用add方法將物件新增到Set當中時,實際上是將該物件作為底層所維護的Map物件的key,而value則都是同一個Object物件(該物件我們用不上);其他的都是通過定義的HashMap物件實現的。 2.HashMap的底層,
loadFactor負載因子為0.75,資料結構中的雜湊表有關。通過雜湊函式也就是雜湊函式計算。 table是一個Entry型別的陣列,當需要的時候回重新調整大小,他的長度必須為2的指數。預設生成一個長度為16的Entry型別的陣列。 3.Entry是HashMap的內部類,實現了Map.Entry介面,實現了他的方法。 4.HashMap底層維護一個數組,我們向HashMap中所放置的物件實際上是存放在該陣列中。 5. 當向HashMap中put一對鍵值時,它會根據key的hashCode值計算出一個位置,該位置就是此物件準備往陣列中存放的位置。 6. 如果該位置沒有物件存在,就將此物件直接放進陣列當中;如果該位置已經有物件存在了,則順著此存在的物件的鏈開始尋找(Entry類有一個Entry型別的next成員變數,指向了該物件的下一個物件),如果此鏈上有物件的話,再去使用equals方法進行比較,如果對此鏈上的某個物件的equals方法比較為false,則將該物件放到陣列當中,然後將陣列中該位置以前存在的那個物件連結到此物件的後面。 7.HashMap的記憶體實現佈局: