hashcode()与equals()
1、两者的关系
- equals()相等的两个对象hashcode() 一定相等
- equals()不等的两个对象hashcode()有可能相等
- hashcode()是用来查找元素存储位置的索引函数
- equals()是用来根据元素的大概位置来查找相同元素的
2、equals()的覆盖原则和方法
- 自反性
- 对称性
- 一致性
- 地址相同,返回true
- obj为空返回false
- 判断类型(obj.getClass() != this.getClass()),若类型不同,返回false
- 判断自定义字段,若相等,返回true
- 返回false
3、hashcode()的覆盖原则
- 重写了equals()的同时必须重写hashcode(),保证上述关系一致性
- 请参考:hashcode()安全指南