如何在HashMap中确保/强制平等分配?

时间:2013-02-25 02:57:21

标签: java data-structures hash hashmap

HashMap数据结构基于Key的哈希码在其桶之间分配密钥。大多数情况下,如果散列算法非常好,则所有密钥都将分布在不同的桶中。但是,如果所有键都返回相同的哈希码呢?插入/检索操作的顺序为O(n)。

如果我正在实现我自己的HashMap,我将如何(或我该怎么做)确保桶之间的平等分配?还有办法吗?

2 个答案:

答案 0 :(得分:1)

  

但是如果所有键都返回相同的哈希码呢?

然后你输了比赛,你无能为力。

不过不用担心,因为您的数据结构实际上并不关心 - 您的数据结构的用户可能,但他们是负责病态hashCode实施的人员。第一个案例。

理论上,即使是恶意选择的输入值也可以用universal hashing合理均匀地分配,但在Java中,这实际上不是一种选择。

答案 1 :(得分:1)

在键上运行DES之类的东西以生成哈希值。一个不错的加密算法可以保证结果看起来是随机的。