朋友告訴我,由於碎片問題,強烈建議不要使用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. Clojure構建2D哈希映射
- 4. 哈希映射的內存分配
- 5. 哈希映射,哈希集合,哈希字典之間有什麼區別?
- 6. 哈希映射等效於C++
- 7. 我想創建一個哈希映射與內部映射和外部映射關係的哈希映射?
- 8. 保存哈希映射共享偏好
- 9. 保存ArrayList的哈希映射
- 10. 哈希映射對象鍵
- 11. 映射到一個哈希
- 12. Python中的哈希映射
- 13. 使用哈希映射
- 14. jQuery效率低下?
- 15. 如何從哈希映射中獲取最低浮點值
- 16. 爲什麼內存映射區域在Linux中增長下降
- 17. FileStream.ReadByte - 效率低下 - 這是什麼意思?
- 18. 計算哈希映射中元素的頻率
- 19. 內存映射文件偏移量低
- 20. 爲什麼我的哈希不是undef?
- 21. 幫助需要從哈希映射創建哈希集
- 22. 不同的哈希碼,但哈希映射不工作
- 23. 哈希映射中的哈希部分如何工作?
- 24. 哈希映射中的哈希碼約束
- 25. 計算字符串存儲在嵌套哈希映射中的頻率
- 26. 這是mysql語句效率低下嗎?
- 27. 這是XSLT效率低下嗎?
- 28. 爲什麼我的哈希映射中的值與放入的值不同?
- 29. 爲什麼Breeze在分離實體時重置OriginalValues哈希映射?
- 30. 如何反向鏈接哈希映射?
我建議看看hashmaps是如何實現的,看看分配的位置以及它如何導致內存碎片。請注意,如果添加碎片整理堆的間接層,則可以完全避免內存碎片。 – Dai 2014-12-02 02:53:12