equals
equal()方法用来判断两个对象是否“相同”。
hashCode
hashCode()方法返回一个int数,在Object类中的默认实现是“将该对象的内部地址转换成一个整数返回”。
坑
HashTable HashMap等散列存储结构
同时使用equals()与hashCode(),不同时重写会出现数据比对异常。
乱用hashCode
hashcode变了,导致查找的区域错误。
正确使用姿势
- 在散列结构中判断对象相等的条件是 hashcode相等以及equals 相等
- 覆盖equals时一定要覆盖hashCode
- 尽量不要修改与计算hashcode相关属性的值,非要修改的话先删除该元素,修改完再加入集合