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

发布于 2020-01-08 09:10:06
关注者
0
被浏览
2100
1 个回答
  • 面试哥
    面试哥 2020-01-08
    为面试而生,有面试问题,就找面试哥。

    不对,两个对象的 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() 相等即两个键值对的哈希值相等,然而哈希值相等,并不一定能得出键值对相等。

面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看