码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-02-10 15:21:19      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:代码   string   orm   col   int   相同   mat   哈希   结果   

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

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

 

代码示例:

 

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

 

 

执行的结果:

 

str1:1179395 | str2:1179395

 

false

 

代码解读:很显然“通话”和“重地”的 hashCode() 相同,然而 equals() 却为 false

因为在散列表中,hashCode()相等即两个键值对的哈希值相等,然而哈希值相等,并不一定能得出键值对相等。

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

标签:代码   string   orm   col   int   相同   mat   哈希   结果   

原文地址:https://www.cnblogs.com/leifei/p/12291023.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!