HashMap基于Size重新散列

时间:2017-08-19 18:15:01

标签: java hash hashmap

我遇到一个问题,即当HashMap大小达到loadFactor*capacity+1时,var deposit=deposit.imgs; 中的重新搜索总是会发生。现在假设最初有16个桶,我插入的对象有一个糟糕的hashCode实现意味着返回相同的值,即1.现在,即使在插入13个元素后,重新散列将会发生,但如果你看到所有元素都是在LinkedList和其他15个桶形式的一个桶中是空的。所以为什么Rehashing在大小和不容量的基础上完成。在HashMap中,使用提供的HashCode重新计算hashCode,但也会返回相同的值。

1 个答案:

答案 0 :(得分:3)

HashMap并不知道所有13个元素都返回了相同的hashCode()

他们本可以返回13个不同的哈希代码,这些代码恰好映射到相同的哈希,然后重新哈希可以将它们全部映射到不同的桶中

添加逻辑以检测错误的hashCode()实现是不可行的。