为什么java重写equals的时候 要重写hashCode?
我认为有两点需要关注:
- hashCode是不是重写需要看业务,开放开发人员可以重写这个方法,可能有这种情况,比如我们仅仅对比object的部分属性,就认为两者相等,而不对比其其他属性。
- 重写java object hashCode方法,是为了在一些算法中避免我们不想要的冲突和碰撞。比如其HashMap,HashSet的使用中。
为什么java重写equals的时候 要重写hashCode?
我认为有两点需要关注:
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
1 回答2.1k 阅读✓ 已解决
我觉得主要还是第二点,避免碰撞和冲突。
hashCode 用在 集合类 中标识单个对象,个人认为还是有必要重写的。
而且当程序员 业务实体对象被创建出来后,可能能够合理利用,但是其他人在使用该对象的时候没必要特别留意 hashCode。
apache commons 提供了帮助方法,挺好用的: