2012-04-02 32 views
0

可能重複:
Memory overhead of Java HashMap compared to ArrayList的HashMap VS的ArrayList(160個entrys)

我嘗試在谷歌搜索但沒有找到答案,我需要存儲在收集160個entrys,我不想迭代他們,我想通過一個入口獲得價值,一個點2D,什麼是最好的? 更少的內存消耗和更快的訪問? 非常感謝提前;)

+3

看看http://stackoverflow.com/questions/1526596/memory-overhead-of-java-hashmap-compared-to-arraylist – 2012-04-02 12:21:57

回答

2

使用較少的內存消耗和更快的訪問?

HashMap可能會提供更快的訪問速度。這個可能在計算上很重要,但前提是應用程序使用該集合進行大量查找。

ArrayList可能會減少內存使用量。但是,對於包含160個元素的單個集合,差異可能不相關。


我的建議是不花很多時間來決定哪個最好。如果需要的話投擲一枚硬幣,然後轉移到更重要的問題上。如果CPU和/或內存分析告訴你這個數據結構是一個嚴重的瓶頸,那麼你只應該擔心這種事情(集合總是很小)。

+0

感謝隊友,我會實現哈希映射;) – TiagoM 2012-04-02 12:42:38

+0

@TiagoM我希望你的意思是你將使用HashMap而不是實現你自己的哈希映射。 – 2012-04-02 12:50:31

+0

yes offcourse xD 謝謝;) – TiagoM 2012-04-02 14:32:01

2

如果Hashmap vs ArrayList是你只有兩個選項,顯然這將是一個哈希映射的速度的回報。我不確定內存使用情況。但ArrayList有能力維持秩序。

5

160個條目?誰在乎。使用哪種API更好 - 可能是HashMap

此外,在數據結構中,頻繁的折衷是速度與內存使用的關係 - 通常情況下,您不能同時擁有這兩者。 (例如,使用鏈接爲衝突解決將具有用於存儲桶上的陣列存儲器開銷的哈希表;可以通過在它鍵訪問的元素將是比搜索陣列的關鍵更快。)

+0

好吧,非常感謝很多,它有點不好重新?因爲我不確定它是160 ..還是140 ..或130 ..它會在100到160之間的一些值。 – TiagoM 2012-04-02 12:27:54

+0

重整不是很好的表現,但有多糟糕取決於一生的地圖。如果地圖壽命很長,並且在達到最終容量後會有很多讀數,那麼可能並不重要。如果你可以設置所需容量的合理上限,你可以防止調整Map的大小 - 在你的情況下,它是160個元素,所以你可以使用構造函數創建具有多個桶的地圖:http:// docs .oracle.com/javase/7/docs/api/java/util/HashMap.html#HashMap(int) – millimoose 2012-04-02 17:17:31