为什么,如果两个对象根据equals不相等,则不需要返回不同的hashCode值?

sap*_*sap 1 java

可能的重复:
在Java中,为什么equals()和hashCode()必须一致?
为什么hashCode()可以为java中的不同对象返回相同的值?

在JAVA API中我们可以看到

如果两个对象根据equals不相等,则不需要返回不同的hashCode值.

为什么会这样?

如果两个对象根据equals不相等,那么应该要求返回不同的hashCode值吗?

小智 9

散列码是AFAIR的32位整数,因此许多状态限制为2 ^ 32.您创建的几乎每个类都会有更多可能的状态,因此不可能确保不同的对象不具有相同的哈希码值.

哈希码的不等式意味着对象不相等,但是哈希码的相等意味着对象可能是相等的.