两个对象的hashCode()相同时,equals()相等吗?

2022-09-21 14:07:37

Java基础

首先明确答案,两个对象的hashCode()相同,equals()可能相等,也可能不相等。

      接下来详细说一下我查阅的资料和自己的理解。
      之前<“==”和equals()方法的区别>文章里对equals()方法做过详细阐述,在这里再大致说一下,不了解的可以点击上面的链接查看。
equals():比较的是非基本类型的数据的引用地址(即内存地址)是否相同,但是对于重写equals方法的类型,比较的是对象内容是否相同。
hashCode():计算对象实例的哈希码,用于返回字符串的哈希码。其中哈希码使用散列表(也叫哈希表)存储的。但是因为哈希表存储的Hash散列值时可能存在有冲突的情况,因此,两个对象的equals()可能不同,虽然概率很低。
      因此在比较两个对象是否相等的时候,单单比较两个对象的hashCode是否相等是不可以的。

两个对象的equals() 相等,hashCode()一定相等。
两个对象的hashCode()相等,equals()不一定相等。
  • 作者:不想当个程序员
  • 原文链接:https://blog.csdn.net/A_Tu_daddy/article/details/103078883
    更新时间:2022-09-21 14:07:37