日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

HashMap的扩容机制---resize()

發布時間:2025/5/22 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HashMap的扩容机制---resize() 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

擴容
就是重新計算容量,向HashMap對象里不停的添加元素,而HashMap對象內部的數組無法裝載更多的元素時,對象就需要擴大數組的長度,以便能裝入更多的元素。

什么時候擴容?
當向容器添加元素的時候,會判斷當前容器的元素個數,如果大于等于閾值—即當前數組的長度乘以加載因子的值的時候,就要自動擴容啦。

怎么擴容?
1、jdk1.7
假設了我們的hash算法就是簡單的用key mod 一下表的大小(也就是數組的長度)。
其中的哈希桶數組table的size=2, 所以key = 3、7、5,put順序依次為 5、7、3。在mod 2以后都沖突在table[1]這里了。這里假設負載因子 loadFactor=1,即當鍵值對的實際大小size 大于 table的實際大小時進行擴容。接下來的三個步驟是哈希桶數組 resize成4,然后所有的Node重新rehash的過程。

2、jdk1.8


因此,我們在擴充HashMap的時候,不需要像JDK1.7的實現那樣重新計算hash,只需要看看原來的hash值新增的那個bit是1還是0就好了,是0的話索引沒變,是1的話索引變成“原索引+oldCap。既省去了重新計算hash值的時間,而且同時,由于新增的1bit是0還是1可以認為是隨機的,因此resize的過程,均勻的把之前的沖突的節點分散到新的bucket了

總結

以上是生活随笔為你收集整理的HashMap的扩容机制---resize()的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。