Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 重写equals()方法时为什么要重写hashcode()?_Java_Equals_Hashcode - Fatal编程技术网

Java 重写equals()方法时为什么要重写hashcode()?

Java 重写equals()方法时为什么要重写hashcode()?,java,equals,hashcode,Java,Equals,Hashcode,为什么每次重写equals()方法时都要重写hashCode()方法?据我所知,他们两人似乎实现了不同的目的hashCode()方法在哈希表中用于确定键的相等性。但是equals()方法用于确定两个对象的相等性。如果根据equals方法两个对象相等,则它们的哈希代码也必须相等。否则,哈希表中的查找将失败。您的两条语句都有些错误。这个问题已经被问过几百次了;您将使用google获得更多信息。仅仅因为两个值散列到同一个值并不意味着它们相等,您需要检查它们是否相等。您不需要覆盖这两个值,但实际上很容易

为什么每次重写
equals()
方法时都要重写
hashCode()
方法?据我所知,他们两人似乎实现了不同的目的
hashCode()
方法在哈希表中用于确定键的相等性。但是
equals()
方法用于确定两个对象的相等性。

如果根据
equals
方法两个对象相等,则它们的哈希代码也必须相等。否则,哈希表中的查找将失败。

您的两条语句都有些错误。这个问题已经被问过几百次了;您将使用google获得更多信息。仅仅因为两个值散列到同一个值并不意味着它们相等,您需要检查它们是否相等。您不需要覆盖这两个值,但实际上很容易做到,因为现代IDE支持为它们生成代码。