A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 KevinSmart 于 2014-6-1 09:27 编辑

为什么覆写equals 方法必须覆写hashCode方法?

6 个回复

正序浏览
饥渴ing 发表于 2014-6-1 00:17
哥们扯着蛋了首先对象引用地址存的是对象的首地址而不是哈希值(你可以创建2个同样内容的String对象用=比 ...

确实扯到蛋了,对象的引用确实是保存的对象内存地址中的首地址。
回复 使用道具 举报
提菩--空 发表于 2014-5-31 01:39
对象的引用地址是一个哈希值。而这个哈希值是通过hashcode方法返回确定。那判断对象相等,首先会先判断对象 ...

哥们扯着蛋了首先对象引用地址存的是对象的首地址而不是哈希值(你可以创建2个同样内容的String对象用=比较)equals方法不会先掉用hashCode方法hashMap和hashSet判断唯一才会先判断hashCode在判断equals方法。你如果覆写了equals方法要保证两对象相同时hashCode结果也该相同
回复 使用道具 举报
提菩--空 发表于 2014-5-31 01:39
对象的引用地址是一个哈希值。而这个哈希值是通过hashcode方法返回确定。那判断对象相等,首先会先判断对象 ...

讲的很好,谢谢分享
回复 使用道具 举报
这就是一个规定  要去遵守而已,就像toString()方法要进行覆盖一样
回复 使用道具 举报
对象的引用地址是一个哈希值。而这个哈希值是通过hashcode方法返回确定。那判断对象相等,首先会先判断对象的哈希值 。hashcode相同后,才会去调用equals方法,这是一个先后顺序。也就是说如果涉及到hash结构对象的操作,那么得复写equals和hashcode。如果不涉及hash结构的话,那么hashcode就没有必要复写。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1 赞一个!

查看全部评分

回复 使用道具 举报 0 1
不是必须要覆写hashCode 方法,覆写hashCode方法是为了维护hashCode 的常规协定.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马