HashMap心得

HashMap的心得

HashMap是通過Entry[]數組和鏈表來實現的。在進行put(K key,V value)操作時,會通過Key的hashCode計算得出這個Entry的索引值,如果Entry的索引值重複,那麼就會使用到鏈表,把後存進的元素放在這個數組中,並把next屬性指向在它之前存進來的具有相同hashCode值的那個元素。

爲什麼後進來的元素需要放在鏈表的最前面,而不是最後面,這就取決於效率問題,在集合中,我們除了做存(put)的操作之外,還需要做取(get())的操作;get(Object key)方法在實現的時候,因爲HashMap底層綜合運用了數組和鏈表,如果hashCode值重複,那麼就需要去這個索引下的鏈表中去尋找值,這樣就會出現兩次查詢,那麼爲了提高效率,把後進來的值放在鏈表的最前面,這樣可以減少一次查詢,提高效率。

除此之外,HashMap的數組其實也是一個鏈表,所以HashMap實際上是一個”鏈表散列”的數據結構,綜合使用了數組和鏈表這兩種數據結構。

附:網上找的HashMap圖

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章