码迷,mamicode.com
首页 > 其他好文 > 详细

为什么重写equals()方法就必须重写hashCode()方法

时间:2018-03-15 22:15:04      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:规则   问题   属性   gpo   出现   hash   log   这不   地址   

hashCode()和equals()保持一致,如果equals方法返回true,那么两个对象的hasCode()返回值必须一样。如果equals方法返回false,hashcode可以不一样,但是这样不利于哈希表的性能,一般我们也不要这样做。重写equals()方法就必须重写hashCode()方法的原因也就显而易见了。

   假设两个对象,重写了其equals方法,其相等条件是属性相等,就返回true。如果不重写hashcode方法,其返回的依然是两个对象的内存地址值,必然不相等。这就出现了equals方法相等,但是hashcode不相等的情况。这不符合hashcode的规则。下边,会介绍在集合框架中,这种情况会导致的严重问题。

为什么重写equals()方法就必须重写hashCode()方法

标签:规则   问题   属性   gpo   出现   hash   log   这不   地址   

原文地址:https://www.cnblogs.com/theWinter/p/8576386.html

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