有朋友告诉我,由于碎片问题,强烈建议不要使用2D hashmap吗? 任何人都可以判断是否是这种情况以及为什么?
答案 0 :(得分:2)
为了提高效率,哈希映射需要一定量的空白空间,否则冲突率会过高。如果散列映射包含更多的散列图,则效果会成倍增加 - 如果每个散列映射为50%已满,则组合仅为25%已满。
更有效的策略可能是将两个密钥组合成一个密钥并使用单级哈希映射。
答案 1 :(得分:1)
如果合法需要2d hashmap,我个人认为没有理由不鼓励使用。
他们可能指的是系统如何处理碰撞。如果两个不同的值以相同的哈希值位置结束,我们该怎么办?我们仍然需要存储它们。有一些不同的技术用于处理这个问题,其中之一是旨在从一大堆可能的哈希值位置开始,这可能会导致大量浪费的空间。一个更好的方法是检查下一个可用位置,直到找到一个空位。
我研究过这些类型的存储已经有一段时间了,但这似乎是他们可能会谈论的内容。这不是一个主要问题,当然不是永远不使用散列图(包括2d)的理由。我不确定这一点,但我认为上面的问题在更多维度中使用时更复杂(因此更多的是2d hashmap的问题)。