我有一个问题,在HashMap
中的重新散列总是在大小达到loadFactor*容量1
时发生。现在假设最初有16个桶,我插入的对象对hashCode的实现不好,这意味着返回相同的值,即1。现在,即使插入了13个元素,重新散列也会发生,但是如果你看到所有元素都以LinkedList的形式在一个桶中,其他15个桶empty.So为什么要根据大小而不是容量进行重新散列。在HashMap中,使用提供的HashCode重新计算hashCode,但也会返回相同的值。
HashMap
不知道所有13个元素都返回了相同的hashCode()
。
他们本可以返回13个不同的哈希码,只是碰巧都映射到同一个哈希桶中,然后重新哈希可能会将它们全部映射到不同的桶中。
添加逻辑来检测错误的hashCode()
实现是不可行的。