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

Posted 程序员小宇

tags:

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

不对,俩个对象的hashCode()相同,equals()不一定为true。

代码示例:

1 String str1 = "通话";
2 String str2 = "重地";
3 System.out.println(String.format("str1:%d | str2:%d",     str1.hashCode(),str2.hashCode()));
4 System.out.println(str1.equals(str2));

执行结果:

str1:1179395 | str2:1179395

false

代码解读:很显然"通话"和"重的"的hashCode()相同,然而equals()则为true,因为在散列表中,hashCode()相等即俩个键值对的哈希值相等,然而哈希值相等,并不一定能得出键值对相等。

 

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

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

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

为啥在java的set集合中 hashcode相同 但equals结果可能为false

equals==和hashCode

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

equals 与hashCode 的关系