hashmap初始化指定大小 hashmap最多能放多少數(shù)據(jù)?
hashmap最多能放多少數(shù)據(jù)?上面是這么說的。。。沒有容量擴展的示例:如果10個存儲桶中有1W數(shù)據(jù),并且每個存儲桶平均有1000個數(shù)據(jù),那么即使jdk8中默認有8個以上的存儲桶,它也會將您變成一棵紅
hashmap最多能放多少數(shù)據(jù)?
上面是這么說的。。。
沒有容量擴展的示例:
如果10個存儲桶中有1W數(shù)據(jù),并且每個存儲桶平均有1000個數(shù)據(jù),那么即使jdk8中默認有8個以上的存儲桶,它也會將您變成一棵紅黑樹,那么您查找元素的平均時間是log(base 2)1000。
另一方面,如果擴容。過程同上,但平均時間會大大縮短。
還有誰說12個會擴大?這只是默認值。
JDK文檔明確建議在初始化HashMap時,應根據(jù)將來存儲的數(shù)據(jù)量一次性指定其容量和負載因子。盡量避免擴展(這將導致額外的成本),同時,它不應該浪費內(nèi)存
你好,我很高興回答你的問題。
如果你是某個單位的公職人員,你的親戚朋友經(jīng)常來找你打聽單位的內(nèi)部事務。如果你有什么事需要你幫忙,你應該怎么處理?][真題]愛狗協(xié)會人士反映,最近他們用200條狗堵了一輛車,網(wǎng)上批評劉胡蘭、邱少云、瑯琊山五杰等中國抗日英雄的言論很多。你覺得這個怎么樣?]【真題】近年來,釋放積德的行為層出不窮,但最近有人放生老鼠。你怎么認為?
面試題還有很多其他意思,小編不會一一列出,如果你有興趣,可以去sd.offcn.com網(wǎng)站學習。
你經(jīng)歷過哪些有意思的面試題目?
有兩個原因
1。為了查找和添加元素,模塊化操作用于查找數(shù)組下標。如果模運算是2的n次方,則可以用位運算符代替,這樣效率更高。
2. 擴容方便。
如果直接查看源代碼,可以看到擴展的resize方法的參數(shù)是2*表.長度(圖中是JDK7的源代碼),也就是說每次擴容都是容量的兩倍,擴容后需要進行數(shù)據(jù)遷移。如果初始長度為2的n次方,則擴展將減少數(shù)據(jù)遷移的次數(shù)。
例如,初始長度為16,將擴展到32。位置1中的節(jié)點僅在擴展后遷移到位置1和17。實際上,I位置的節(jié)點只會遷移到I之前和I擴展之后的數(shù)組長度。
例如,當數(shù)組的長度為16時,它位于1的位置。當它擴展到32時,它會被移到17的位置
例如,當數(shù)組的長度為16時,它就在1的位置。當它擴展到32時,它仍然處于1的位置。
這是主要原因。
順便說一下,在源代碼中,如果您不將其設(shè)置為2的n次方,它也將幫助您將其設(shè)置為2的n次方。例如,如果通過15,它將幫助您將其設(shè)置為16。源代碼的對應方法是2的整數(shù)倍。
希望對您有所幫助。你可以關(guān)注我和分享一些源代碼知識的想法