java - 如何确保/强制 HashMap 中的平等分配?

标签 java data-structures hash hashmap

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/

相关文章:

java - 有效地计算记录列表中的项目

database - 如何使用 perl 将数据库的每一行保存为目录中的单独数据 block 文件?

java - Mockito 中的连续通话测试

c# - 三角形存储为数组。每层的高度和长度?

java - 如何在 Java 中将字符串值转换为自定义模型对象?

algorithm - 排序问题 - n/k 间隔,每个间隔大小为 k

c - 分配数据结构并将信息传递到数据结构中

c - 用于分配结构散列键的全局变量的替代方案

java - 从非英语网站获取纯文本内容

java - 使用java按指定顺序排列arrayList的值