我一直在阅读 HashMap Collisions ,发现了两种不同的定义,但不确定哪一个是正确的。
其中最重要的答案是“当多个键散列到同一个存储桶时,就会发生冲突。”
我在同一问题中看到另一个答案,即“当两个不同的键碰巧具有相同的哈希码,或者两个具有不同哈希码的键碰巧映射到底层数组中的同一个存储桶时,就会发生冲突。”
对于#1,多个键可以散列到同一个存储桶,但具有不同的散列码。不同的HashCode可以是%或者&到同一个bucket,但是是不同的数字。
对于#2,它表示多个键具有相同的 hashCode,因此散列到同一个存储桶。
哪个是正确的定义?或者这两种情况有不同的术语吗?
编辑:不幸的是,我无法对澄清的答案发表评论,因为我没有要点。谢谢
使用哈希的更广泛上下文中的“冲突”是哈希冲突。
在 a 的上下文中HashMap,“冲突”意味着两个对象的哈希码导致它们存储在同一个存储桶中。当然,这可能是由于两个对象从 中返回相同的值hashCode(),而且(更有可能)它们的哈希码在用于计算存储桶时产生了相同的存储桶。