面试必备之为什么重写equals必须重写hashcode
Posted zbb2161228
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试必备之为什么重写equals必须重写hashcode相关的知识,希望对你有一定的参考价值。
印象中是来自
https://github.com/Snailclimb/JavaGuide
Object.hashcode的通用约定为:
1.在一个应用执行期间,如果一个对象的equals方法做比较所用到的信息没有被修改的话,那么对该对象调用hashCode方法多次,它必须始终如一地返回同一个证书;在同一个应用程序的多次执行过程中,这个证书可以不同,即这个应用程序这次返回的证书与下一次执行返回的证书可以不一致。
2.如果两个对象根据equals(Object)方法是相等的,那么调用者两个对象中任一个对象的hashCode方法必须产生同样的整数结果。
3.如果两个对象根据equals(Object)方法是不相等的,那么调用者两个对象中任一个对象的hashCode方法,不要求必须产生不同的证书结果。
如果只重写了equals方法而没有重写hashCode方法的话,则会两个对象根据equals(Object)方法返回相等,但对调用者两个对象中任一对象进行hashCode方法不产生同样的结果。
以上是关于面试必备之为什么重写equals必须重写hashcode的主要内容,如果未能解决你的问题,请参考以下文章
一文就带你搞懂✨为什么重写 equals 时必须重写 hashCode 方法?
为什么重写equals()方法就必须重写hashCode()方法
面试官:重写 equals 时为什么一定要重写 hashCode?