为什么重写equals()方法就必须重写hashCode()方法

Posted 路在脚下丶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么重写equals()方法就必须重写hashCode()方法相关的知识,希望对你有一定的参考价值。

hashCode()和equals()保持一致,如果equals方法返回true,那么两个对象的hasCode()返回值必须一样。如果equals方法返回false,hashcode可以不一样,但是这样不利于哈希表的性能,一般我们也不要这样做。重写equals()方法就必须重写hashCode()方法的原因也就显而易见了。

   假设两个对象,重写了其equals方法,其相等条件是属性相等,就返回true。如果不重写hashcode方法,其返回的依然是两个对象的内存地址值,必然不相等。这就出现了equals方法相等,但是hashcode不相等的情况。这不符合hashcode的规则。下边,会介绍在集合框架中,这种情况会导致的严重问题。

以上是关于为什么重写equals()方法就必须重写hashCode()方法的主要内容,如果未能解决你的问题,请参考以下文章

一文就带你搞懂✨为什么重写 equals 时必须重写 hashCode 方法?

重写equals就必须重写hashCode的原理分析

为什么系列之重写equals方法必须重写hasCode方法?

java中为什么重写equals时必须重写hashCode方法?

为什么重写equals时必须重写hashCode方法?(转发+整理)

为什么重写equals方法必须重写hashcode方法?