朋友告诉我,由于碎片问题,强烈建议不要使用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