学习总结,仅供自己参考,如有不对欢迎指正
Java相关:
1.为什么要同时重写equals和hashCode?
- 两个对象相等,hashCode一定相等
- 两个对象不等,hashCode不一定不等
- hashCode相等,两个对象不一定相等
- hashCode不等,两个对象一定不等
HashSet有去重唯一
的特点,若让元素都去equals比较,非常耗费性能。所以HashSet的实现引入了HashCode
,先比较HashCode
值,如果相等再进行equals
比较,大大提升效率。所以,如果你只重写了equals而没有重写hashCode,在使用集合时可能有问题。
网友评论