1. 程式人生 > >HashMap和HashSet的原始碼分析

HashMap和HashSet的原始碼分析

1 HashSet底層是使用HashMap實現的

2 當使用add方法將物件新增到Set當中時,實際上是將該物件作為底層所維護的Map物件的key,而value則都是同一個Object物件(該物件我門用不上);

3 HashMap底層維護一個數組,我們向HashMap中所放置的物件實際上是儲存在該陣列當中;

4 LinkedList底層是一個Entry

5 當向HashMap中put一對鍵值時,它會根據key的hashCode值計算出一個位置,該位置就是此物件準備存放的位置。

6 如果該位置沒有物件存在,就將此物件直接存進陣列當中;如果給位置已經有物件存在了,則順著此存在的物件的鏈開始尋找(Entry類有一個Entry型別的next成員變數,指向了該物件的下一個物件),如果此鏈上有物件的話,再去使用equals()方法進行比較,如果對此鏈上的某個物件的equals方法比較為false,則將該物件放到該陣列當中,然後將陣列中該位置以前存在的那個物件連線到此物件的後面。