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

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

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

代码示例:

public class Demo {

    public static void main(String[] args) {
        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() 相等即两个键值对的哈希值相等,然而哈希值相等,并不一定能得出键值对相等。

成熟不是人的心变老,而是泪在眼眶里打转还能微笑。
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号