hashcode 相等两个类一定相等吗? equals呢? 相反呢?
结论:
不一定相等。
原因:
hashCode 算法有一定概率产生相同的 hashCode,即 hash 碰撞。
分重写 和 未重写 hashcode、equals 方法两种场景:
一、hashcode 方法 和 equals 方法没有重写时
- hashcode相等两个类不一定相等
- equals返回true的两个类一定相等(为同一个对象)
- 两个类相等hashcode不一定相等
- 两个类相等equals不一定返回true
二、hashcode 方法和 equals 方法均已按规范重写时
- hashcode相等,两个类不一定相等(存在哈希冲突)
- equals返回true的两个类一定相等
- 两个类相等hashcode一定相等
- 两个类相等equals一定返回true
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 人话翻译机!
评论