卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

hashmap初始化大小多少合適 你經(jīng)歷過哪些有意思的面試題目?

你經(jīng)歷過哪些有意思的面試題目?你好,我很高興回答你的問題。如果你是某個單位的公職人員,你的親戚朋友經(jīng)常來找你打聽單位的內(nèi)部事務(wù)。如果你有什么事需要你幫忙,你應(yīng)該怎么處理?][真題]愛狗協(xié)會人士反映,最

你經(jīng)歷過哪些有意思的面試題目?

你好,我很高興回答你的問題。

如果你是某個單位的公職人員,你的親戚朋友經(jīng)常來找你打聽單位的內(nèi)部事務(wù)。如果你有什么事需要你幫忙,你應(yīng)該怎么處理?][真題]愛狗協(xié)會人士反映,最近他們用200條狗堵了一輛車,網(wǎng)上批評劉胡蘭、邱少云、瑯琊山五杰等中國抗日英雄的言論很多。你覺得這個怎么樣?]【真題】近年來,釋放積德的行為層出不窮,但最近有人放生老鼠。你怎么認(rèn)為?

面試題還有很多其他意思,小編不會一一列出,如果你有興趣,可以去sd.offcn.com網(wǎng)站學(xué)習(xí)。

hashmap最多能放多少數(shù)據(jù)?

就是這么說的。。。

沒有容量擴展的示例:

如果10個存儲桶中有1W數(shù)據(jù),并且每個存儲桶平均有1000個數(shù)據(jù),那么即使jdk8中默認(rèn)有8個以上的存儲桶,它也會將您變成一棵紅黑樹,那么您查找元素的平均時間是log(base 2)1000。

另一方面,如果擴容。過程同上,但平均時間會大大縮短。

還有誰說12個會擴大?這只是默認(rèn)值。

JDK文檔明確建議在初始化HashMap時,應(yīng)根據(jù)您將來存儲的數(shù)據(jù)量一次性指定其容量和負(fù)載因子,以避免擴展(這將導(dǎo)致額外成本)和不浪費內(nèi)存

1。4字節(jié)表示的整數(shù)數(shù)為2^32≈40億,2字節(jié)表示的無符號整數(shù)數(shù)為2^16≈60000。

2、2G=2^31b≈20億字節(jié)。

3、為了找出出現(xiàn)次數(shù)最多的數(shù)字,應(yīng)記錄每個數(shù)字的出現(xiàn)次數(shù)。最快的方法是記錄每個數(shù)字在內(nèi)存中出現(xiàn)的次數(shù)。記錄方法是記錄相應(yīng)的存儲器地址數(shù)和相應(yīng)地址的存儲器單元數(shù)。但是,2G內(nèi)存只能記錄20億字節(jié)的數(shù)字,如果每個數(shù)字的出現(xiàn)次數(shù)大于255則會發(fā)生溢出,沒有風(fēng)險。因此,這種方案是不可取的。

4、這樣,磁盤上只能記錄每次出現(xiàn)的次數(shù)。這樣,就在磁盤上創(chuàng)建了一個16g文件。每4個字節(jié)對應(yīng)一個整數(shù),可以對應(yīng)40億個整數(shù)。用于記錄相應(yīng)整數(shù)的個數(shù)。

1. 初始化文件。

2. 依次讀取數(shù)據(jù)并用無符號整數(shù)記錄在磁盤文件中。如果發(fā)生溢出,則該數(shù)字是次數(shù)最多的數(shù)字。

3. 從文件中讀取每個數(shù)字的次數(shù),用變量a記錄最高次數(shù),用變量B記錄最高次數(shù)的數(shù)據(jù),用文件依次記錄最高次數(shù)的數(shù)據(jù)。當(dāng)最大次數(shù)增加時,a1和B被設(shè)置為1,并且該數(shù)字被寫入文件中。當(dāng)出現(xiàn)相同次數(shù)的數(shù)字b1時,該數(shù)字被寫入文件的相應(yīng)位置,直到全部被讀取為止。

所以您根本不需要2G內(nèi)存。

挑戰(zhàn)程序員同學(xué),如何只用2GB內(nèi)存從20/40/80億個整數(shù)中找到出現(xiàn)次數(shù)最多的數(shù)?

有兩個原因

1。為了查找和添加元素,模塊化操作用于查找數(shù)組下標(biāo)。如果模運算是2的n次方,則可以用位運算符代替,這樣效率更高。

2. 擴容方便。

如果直接查看源代碼,可以看到擴展的resize方法的參數(shù)是2*表.長度(圖中是JDK7的源代碼),也就是說每次擴容都是容量的兩倍,擴容后需要進(jìn)行數(shù)據(jù)遷移。如果初始長度為2的n次方,則擴展將減少數(shù)據(jù)遷移的次數(shù)。

例如,初始長度為16,將擴展到32。位置1中的節(jié)點僅在擴展后遷移到位置1和17。實際上,I位置的節(jié)點只會遷移到I之前和I擴展之后的數(shù)組長度。

例如,當(dāng)數(shù)組的長度為16時,它位于1的位置。當(dāng)它擴展到32時,它會被移到17的位置

例如,當(dāng)數(shù)組的長度為16時,它就在1的位置。當(dāng)它擴展到32時,它仍然處于1的位置。

這是主要原因。

順便說一下,在源代碼中,如果您不將其設(shè)置為2的n次方,它也將幫助您將其設(shè)置為2的n次方。例如,如果通過15,它將幫助您將其設(shè)置為16。源代碼的對應(yīng)方法是2的整數(shù)倍。

希望對您有所幫助。你可以關(guān)注我和大家分享一些知識源代碼的想法

長度的n次方2。模運算可以通過位運算H&(length-1)得到,所以效率最高

顧名思義,鏈表HashMap比HashMap更像鏈表結(jié)構(gòu)。與HashMap相比,LinkedHashMap維護(hù)了一個帶有雙鏈表的HashMap。LinkedHashMap支持兩種排序,一種是插入排序,另一種是使用排序。最近使用的一個將被移到尾部,例如M1 M2 m3 M4。使用m3后,將為M1 M2 M4 m3。當(dāng)輸出LinkedHashMap時,它的元素是連續(xù)的,而HashMap的輸出是隨機的。如果地圖映射很復(fù)雜并且需要高效率,那么最好使用LinkedHashMap。但是,多線程訪問可能會導(dǎo)致異步,因此有必要使用LinkedHashMap集合.synchronizedMap讓我們將其打包以同步。它的實現(xiàn)一般如下:map

1。HashSet的底層是用HashMap實現(xiàn)的。HashSet的實現(xiàn)相對簡單。HashSet的大多數(shù)方法都是通過調(diào)用HashMap的方法來實現(xiàn)的。因此,HashSet和HashMap的實現(xiàn)本質(zhì)上是相同的。

2. HashMap的鍵是放入HashSet的對象,值是對象類型。

3. 當(dāng)調(diào)用HashSet的add方法時,一行(鍵值對)實際上被添加到HashMap中。行的鍵是添加到HashSet的對象,行的值是對象類型的常量