面试必备之为什么重写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方法不产生同样的结果。

猜你喜欢

转载自www.cnblogs.com/zbb2161228/p/10424928.html