提问者:小点点

HashMap基于大小的重新散列


我有一个问题,在HashMap中的重新散列总是在大小达到loadFactor*容量1时发生。现在假设最初有16个桶,我插入的对象对hashCode的实现不好,这意味着返回相同的值,即1。现在,即使插入了13个元素,重新散列也会发生,但是如果你看到所有元素都以LinkedList的形式在一个桶中,其他15个桶empty.So为什么要根据大小而不是容量进行重新散列。在HashMap中,使用提供的HashCode重新计算hashCode,但也会返回相同的值。


共1个答案

匿名用户

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

他们本可以返回13个不同的哈希码,只是碰巧都映射到同一个哈希桶中,然后重新哈希可能会将它们全部映射到不同的桶中。

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