HashMap 数据结构根据键的哈希码在其存储桶之间分配键。大多数情况下,如果散列算法非常好,那么所有 key 都会分布在不同的存储桶中。但是如果所有键都返回相同的哈希码怎么办?插入/检索操作的阶数为 O(n)。
如果我正在实现自己的 HashMap,我将如何(或者我应该做什么)来确保存储桶之间的平等分配?有办法吗?
最佳答案
But what if all keys return the same hashcode?
那么你就输了比赛,而且你也无能为力。
不过不用担心,因为您的数据结构实际上并不关心 - 您的数据结构的用户可能会关心,但他们才是造成病态hashCode
的人第一种情况的实现。
理论上,即使是恶意选择的输入值也可以通过 universal hashing 合理均匀地分布。 ,但在 Java 中,这确实不是一个选择。
关于java - 如何确保/强制 HashMap 中的平等分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15059398/