4
我知道這是由系統中可用的內存決定的,也取決於一個好的散列函數,但總的來說,我想知道什麼是最大的地圖你已經使用,如果它開箱即用,或需要進行任何調整,以使其工作充分。我可以在Java中的一個HashMap對象中存儲多少個元素
我知道這是由系統中可用的內存決定的,也取決於一個好的散列函數,但總的來說,我想知道什麼是最大的地圖你已經使用,如果它開箱即用,或需要進行任何調整,以使其工作充分。我可以在Java中的一個HashMap對象中存儲多少個元素
Java中的HashMap
可以有最大2^30桶,用於存儲條目 - 這是因爲通過java.util.HashMap
使用的剷鬥分配技術需要桶的數目是2的冪,並且由於整數已登入Java,最大正值爲2^31 - 1,所以2的最大功率爲2^30。
但是,事實上對於您可以存儲在HashMap中的鍵/值對的數量沒有編程限制 - 一旦您通過2^31 - 1,size()
函數就會停止準確。這是因爲處理衝突 - 連接在同一個桶中的鍵/值對,如LinkedList
中的節點。一般來說,如果你在任何地方接近2^30的東西,你需要在真實世界的應用程序中跟蹤,你需要更多的內存,而不是在一臺機器上依賴的內存。我曾經使用過的最大的HashMap坐在一個JVM中,擁有幾千萬的條目,全都非常輕巧