在每个覆盖了equals方法的类中,也必须要覆盖hashcode方法。如果不这样做的话,就会违反Object.hashcode的通用约定,从而导致该类无法结合所有基于散列的集合一起正常运作,这样的集合包括HashMap、
HashSet、Hashtable.
Object规范:
在应用程序的执行期间,只要对象的equals方法的比较操作所作用到的信息没有被修改,那么对这同一对象调用多次,hashCode方法都必须返回同一个整数。在同一个应用程序的多次执行过程中,每次执行返回的整数可以不一致。
如果两个对象根据equals方法比较是相等的,那么调用这两个对象中任意一个对象的hashcode方法必须产生同样的结果
如果两个对象根据equals方法比较是不相等的,那么调用这两个对象中任意一个对象的hashCode方法,则不一定要产生不同搞得整数结果。但是,给不相等的对象产生截然不同的整数结果,有可能提高散列列表的性能。
原文地址:https://www.cnblogs.com/dgq-blog/p/9035531.html
时间: 2024-10-09 22:26:47