码迷,mamicode.com
首页 > 编程语言 > 详细

effectiveJava(7)覆盖equals时总要覆盖hashcode

时间:2018-05-14 13:18:50      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:java   不同的   必须   不一致   hash   返回   相等   比较   规范   

  在每个覆盖了equals方法的类中,也必须要覆盖hashcode方法。如果不这样做的话,就会违反Object.hashcode的通用约定,从而导致该类无法结合所有基于散列的集合一起正常运作,这样的集合包括HashMap、

HashSet、Hashtable.

  Object规范:

  在应用程序的执行期间,只要对象的equals方法的比较操作所作用到的信息没有被修改,那么对这同一对象调用多次,hashCode方法都必须返回同一个整数。在同一个应用程序的多次执行过程中,每次执行返回的整数可以不一致。

  如果两个对象根据equals方法比较是相等的,那么调用这两个对象中任意一个对象的hashcode方法必须产生同样的结果

  如果两个对象根据equals方法比较是不相等的,那么调用这两个对象中任意一个对象的hashCode方法,则不一定要产生不同搞得整数结果。但是,给不相等的对象产生截然不同的整数结果,有可能提高散列列表的性能。

 

effectiveJava(7)覆盖equals时总要覆盖hashcode

标签:java   不同的   必须   不一致   hash   返回   相等   比较   规范   

原文地址:https://www.cnblogs.com/dgq-blog/p/9035531.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!