两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?

Posted 上清曲河

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?相关的知识,希望对你有一定的参考价值。

答案是不一定,废话不多说直接上案例:

首先我们先找到两个hashcode值相同但是值不同的两个字符串(其实能找到这些数据就已经能说明我们问题的答案是不一定了)

具体怎么找到的其实网上有很多方法,我具体的参照是根据

https://blog.csdn.net/miranaibuai/article/details/107691043

来尝试了几个字符串,结果:

 

 显而易见,hashcode的值是相同的,但是我们的字符串却是不同的字符串

但是,如果我们在设置字符串的时候我们如果一直把值设置相同,那么我们无论测试几次,它的hashcode都是一样的,所以我们的出的结论是

我们可以说两个对象的值相同那么他们的hashcode一定相同,但是两个hashcode相同的对象那么他们的对象的值不一定相同

以上是关于两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?的主要内容,如果未能解决你的问题,请参考以下文章

java中两个对象值相同却可能有不同的hashcode对吗

两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?

如果两个对象的哈希码相同则他们不一定相同,如果对象一致则哈希码一定相同

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

两个对象值相同 (tmp1.equals(tmp2) == true) 但却可有不同的 HashCode 值,这句话有问题吗?

java中值相同,hashcode一定相同吗