effectiveJava覆盖equals时总要覆盖hashcode
Posted Mr_邓
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了effectiveJava覆盖equals时总要覆盖hashcode相关的知识,希望对你有一定的参考价值。
在每个覆盖了equals方法的类中,也必须要覆盖hashcode方法。如果不这样做的话,就会违反Object.hashcode的通用约定,从而导致该类无法结合所有基于散列的集合一起正常运作,这样的集合包括HashMap、
HashSet、Hashtable.
Object规范:
在应用程序的执行期间,只要对象的equals方法的比较操作所作用到的信息没有被修改,那么对这同一对象调用多次,hashCode方法都必须返回同一个整数。在同一个应用程序的多次执行过程中,每次执行返回的整数可以不一致。
如果两个对象根据equals方法比较是相等的,那么调用这两个对象中任意一个对象的hashcode方法必须产生同样的结果
如果两个对象根据equals方法比较是不相等的,那么调用这两个对象中任意一个对象的hashCode方法,则不一定要产生不同搞得整数结果。但是,给不相等的对象产生截然不同的整数结果,有可能提高散列列表的性能。
以上是关于effectiveJava覆盖equals时总要覆盖hashcode的主要内容,如果未能解决你的问题,请参考以下文章