为什么重写 equals 必须重写 hashcode ?
# 为什么重写 equals 必须重写 hashcode ?
如果 我们重写了 equals 没有重写 hashcode 会导致HashSet 里面可以存储重复的元素。
以 HashSet 为例来说
HashSet 底层是数组结构 存储的元素不重复( O1和O2重复的意思是O1.equals(O2)==true )
add 一个元素进来放在哪里呢?
是根据元素的hash值(即 hashcode )来确定数组下标 将元素放在里面。
如果 我们重写了 equals 没有重写 hashcode
那么 可能会产生这样的数据: O1.equals(O2)==true 但是O1.hashcode()!=O2.hashcode()
导致 HashSet 里面可以存储重复的元素。
编辑 (opens new window)
上次更新: 2022/05/19, 21:26:01