首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >关于 equals 和 hashCode

关于 equals 和 hashCode

作者头像
shengjk1
发布2025-05-16 09:32:45
发布2025-05-16 09:32:45
1150
举报
文章被收录于专栏:码字搬砖码字搬砖

主要是说一下 equals 和 hashcode

1.hashCode

  1. 此方法主要是用来支持 hash tables。比如 HashMap
  2. 要求在 equals 不改动的情况下,每次调用得到的 hashCode 必须是一致的。
  3. 两个对象 equals 相等,则 hashCode 也应该相等。
  4. equals 不相等,则不必要求 hashCode 一定不同,应尽量不同以保证高性能。
  5. 默认实现,通常是通过对象的内部地址转换为整数,所以大多数情况下 Object 定义的 hashCode 确实可以为不同的对象返回不同的整数。

2.equals

  1. 对于 non-null reference x ,满足 x.equals(x) return true。
  2. 对于 non-null reference x,y 满足 对称性 即:如果 x.equals(y) return true ,则 y.equals(x) 也会 return true 。
  3. 对于 non-null reference x,y,x 满足 传递性。即:如果 x.equals(y) return true 和 y.equals(z) return true,那么 x.equals(z) 也应该 return true 。
  4. 对于任何 non-null reference x,y,满足一致性,x.equals(y) 要是 true永远是true
  5. 对于任何 non-null reference x, x.equals(null) return false.
  6. 当重写 equals 方法是必须需要重写 hashCode,这样才能保证 equals 为true的两个对象的 hashCode也一样。(jre 中就有违背这条的类存在)
  7. equals 默认是比较的内存地址。所以默认情况下,当 equals 相等的时候,hashCode也是相等的。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-02-28,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档