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

覆盖equals时总要覆盖hashCode

时间:2017-10-18 20:47:34      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:必须   hashmap   equal   散列   判断   返回   ash   obj   方法   

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

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

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

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

 

覆盖equals时总要覆盖hashCode

标签:必须   hashmap   equal   散列   判断   返回   ash   obj   方法   

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

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