美文网首页Java工程师知识树
Java基础-常用API-equals方法重写为什么必须重写ha

Java基础-常用API-equals方法重写为什么必须重写ha

作者: HughJin | 来源:发表于2021-03-23 16:28 被阅读0次

Java工程师知识树 / Java基础


equals方法为所有类父类Object类的方法,用于判断两个对象是否相等,在子类不重写equals方法的情况下,与==逻辑一致。重写equals,一般逻辑为判断两个对象的内容是否一致,也可以只判断对象的某几个属性。注:字符串String类的equals方法重写了,方法逻辑为比较字符串对象的值

重写equals,一般逻辑为判断两个对象的内容是否一致。

hashCode()的默认行为是对堆上的对象产生独特值。如果没有重写hashCode(),则该class的两个对象无论如何都不会相等(即使这两个对象指向相同的数据)。

除了自定义的判断条件生效外,判断两个对象是否一致的实例是在使用集合类时,集合类中的对象的判断与equals的判断一致。

以HashMap存储对象为例:

// HashMap get方法源码
public V get(Object key) {
      Node<K,V> e;
      return (e = getNode(hash(key), key)) == null ? null : e.value;
}

这里hash(key)中主要是获取keyhashCode做运算,其他集合使用都是类似,所以在集合中判断对象是否相等时不是使用equals判断的,而是使用对象的hashCode值判断的,所以对象在重写equals时也必须重写hashCode方法,并且hashCode方法还必须和equals方法中的判断逻辑一致

相关文章

网友评论

    本文标题:Java基础-常用API-equals方法重写为什么必须重写ha

    本文链接:https://www.haomeiwen.com/subject/sumfhltx.html