前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >为什么重写 equals 时必须重写 hashcode?

为什么重写 equals 时必须重写 hashcode?

作者头像
水货程序员
发布2018-11-13 16:28:24
2.4K0
发布2018-11-13 16:28:24
举报
文章被收录于专栏:javathings

为什么重写 equals 时必须重写 hashcode?

183 total views, 3 views today

equals 默认是和==一样,判断引用是否相等的,一般需要覆写后才能实现真正的判等。

如果认为两个对象是 equal 的,那么最好使得这两个对象的 hashCode 值也是相等的,因为在往 Set 中加对象的时候,会首先用到对象的 hashCode 值。

往 HashSet 中加对象的时候,如下面的流程图:

它先根据 hashCode 来判断对象是否不相等,只要是不相等,HashSet 就认为他们肯定不是同一个对象,就可以省去 equals 的调用开销。

如果两个对象 equals 相等,但是 hashCode 不相等,会导致在 HashSet 中认为是两个不相等的对象,两个对象都会被加入到 HashSet,可能会导致程序异常。

因此,确保 equal 的对象拥有相同的 hashcode 是非常有必要的。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么重写 equals 时必须重写 hashcode?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档