朋友告訴我,由於碎片問題,強烈建議不要使用2D哈希表?任何人都可以告訴如果是這種情況,爲什麼?爲什麼2D哈希映射是內存效率低下?
0
A
回答
1
就我個人而言,如果合理需要2d散列表,我不認爲有任何理由阻止使用。
他們可能指的是系統如何處理碰撞。如果兩個不同的值以相同的散列值位置結束,我們該怎麼做?我們仍然需要將它們都存儲起來。有幾種不同的技術可以用來處理這個問題,其中之一是旨在從一大堆可能的散列值位置開始,這可能會導致大量的浪費空間。更好的方法是檢查下一個可用位置,直到找到空閒位置。
自從我研究這些類型的存儲以來,這已經有一段時間了,但這似乎就像他們可能在談論的那樣。這不是一個主要問題,當然也不是一個不使用hashmaps(包括2d)的理由。我不確定這一點,但我認爲上面的問題複合使用更多的維度(因此更多的是2d散列表問題)。
2
爲了高效,hashmap需要一定數量的空白空間,否則衝突率會太高。如果哈希映射包含更多hashmaps,則效果會相乘 - 如果每個哈希映射滿了50%,則組合只有25%滿。
更有效的策略可能是將兩個密鑰合併成一個密鑰並使用單級哈希映射。
+0
你能解釋一下爲什麼把兩個鍵合併成單個鍵並使用一維散列表會更有效嗎? – f4fc2791e4473eb2ba41b5ddb445b2 2014-12-02 03:48:35
相關問題
- 1. 低延遲分佈在內存哈希映射(計數映射)
- 2. 哈希映射和併發哈希映射有什麼區別?
- 3. 哈希映射內的哈希映射的平均值
- 4. Clojure構建2D哈希映射
- 5. 哈希映射的內存分配
- 6. 哈希映射內存開銷
- 7. 通過哈希映射映射,需要返回哈希映射
- 8. 哈希映射,哈希集合,哈希字典之間有什麼區別?
- 9. 哈希映射等效於C++
- 10. 我想創建一個哈希映射與內部映射和外部映射關係的哈希映射?
- 11. 爲什麼我的哈希映射代碼打印爲空?
- 12. 爲什麼Clojure將xml文檔表示爲哈希映射?
- 13. 將可變哈希映射轉換爲不可變哈希映射
- 14. 添加到哈希映射內的哈希集
- 15. 保存哈希映射到SharedPreferences
- 16. 保存ArrayList的哈希映射
- 17. 保存哈希映射共享偏好
- 18. Java緩存和哈希映射
- 19. 使用哈希映射
- 20. 哈希映射迭代
- 21. 排序哈希映射
- 22. 實現哈希映射
- 23. PowerShell哈希映射類型
- 24. 使用哈希映射
- 25. 哈希映射對象鍵
- 26. 哈希映射的成員?
- 27. 迭代哈希映射
- 28. 聚簇哈希映射
- 29. 方法從哈希映射
- 30. 映射到一個哈希
我建議看看hashmaps是如何實現的,看看分配的位置以及它如何導致內存碎片。請注意,如果添加碎片整理堆的間接層,則可以完全避免內存碎片。 – Dai 2014-12-02 02:53:12