首页 > 其他 > 详细

覆盖equals时总要覆盖hashCode

时间:2017-10-18 20:43:09      阅读:251      评论:0      收藏:0      [点我收藏+]

Object条约规定:相等的对象必须具有相同的散列码hashCode

假如将只覆盖equals方法,没覆盖hashCode方法的类用于HashMap中,将会出现问题,会出现get()方法返回时不是同一个对象

这就相当于将对象put进一个散列桶,却在另一个散列桶get这个对象,就算刚好是put和get都在同一个散列桶中,get方法也必定会返回null,这是因为HashMap做了优化,只要是hashCode的值不相同时就不再判断对象是否相同。

所以在覆盖equals()方法时总要覆盖hashCode()方法。

 

覆盖equals时总要覆盖hashCode

原文:http://www.cnblogs.com/evanxwj/p/7688636.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!