我遇到一个问题,即当HashMap
大小达到loadFactor*capacity+1
时,var deposit=deposit.imgs;
中的重新搜索总是会发生。现在假设最初有16个桶,我插入的对象有一个糟糕的hashCode实现意味着返回相同的值,即1.现在,即使在插入13个元素后,重新散列将会发生,但如果你看到所有元素都是在LinkedList和其他15个桶形式的一个桶中是空的。所以为什么Rehashing在大小和不容量的基础上完成。在HashMap中,使用提供的HashCode重新计算hashCode,但也会返回相同的值。
答案 0 :(得分:3)
HashMap
并不知道所有13个元素都返回了相同的hashCode()
。
他们本可以返回13个不同的哈希代码,这些代码恰好映射到相同的哈希桶,然后重新哈希可以将它们全部映射到不同的桶中
添加逻辑以检测错误的hashCode()
实现是不可行的。