HashMap擴容小結

前言

上一篇文章寫了有關HashMap的總結,這個寫了下HashMap中擴容的問題。

1:當hashmap中的元素越來越多的時候,碰撞的幾率也就越來越高,爲了提高效率就要對hashMap進行擴容

2:hashMap在擴容非常消耗性能,因爲原數組中的數據都複製到新數組中必須重新計算在新數組中的位置,這就是resize();

擴容原理

當hashmap中的元素個數超過數組大小*loadFactor時,就會進行數組擴容

loadFactor的默認值爲0.75,也就是說,默認情況下,數組大小爲16,那麼當hashmap中元素個數超過16*0.75=12的時候,就把數組的大小擴展爲2*16=32,即擴大一倍

重新計算每個元素在數組中的位置 問題就解決了。

下面是我在源碼中註釋的內容,希望對大家有幫助

HashMap擴容小結

HashMap擴容小結

總結

到這我們知道,經過一次擴容處理後,元素會均勻分佈在新的map中,訪問效率上得到提示,但是在這過程中會消耗許多性能,個人認爲儘量避免進行擴容處理,遍歷元素所帶來的壞處大於元素在桶中均勻分佈所帶來的好處。有不同觀點的歡迎大家留言討論。

相關文章