为什么要重写equals和hashcode?

记住:
Object类中的equals方法默认比较的是对象的地址,因为只有是相同的地址才会相等(x == y),如果没有重写equals方法,那么默认就是比较的是地址。
而无论何时如果equals方法被重写那么都是有必要去重写hashCode方法,这个是因为为了维持hashCode的一般约定(general contract),相同的对象必须要有相同的hashCode值。
通过HashMap源码可知:

计算index时,覆盖操作会失败:
equals()方法和hashcode()方法!

相关文章: