可能重复:
在Java中,为什么equals()和hashCode()必须一致? 我了解到,在覆盖equals()方法时,应该始终重写hashCode()方法。是否可以给出一个实际的例子来说明否则会有什么问题呢?
那么,当我们覆盖equals()方法但没有重写hashCode()方法时,可能会出现哪些问题呢?
重写equals()方法是否需要编写健壮的hashCode()函数?还是一个简单的实现就足够了呢?
例如:
下面这个差劲的实现是否已经足以满足equals()和hashCode()之间的契约了?
在Java中,为什么equals()和hashCode()必须一致? 我了解到,在覆盖equals()方法时,应该始终重写hashCode()方法。是否可以给出一个实际的例子来说明否则会有什么问题呢?
那么,当我们覆盖equals()方法但没有重写hashCode()方法时,可能会出现哪些问题呢?
重写equals()方法是否需要编写健壮的hashCode()函数?还是一个简单的实现就足够了呢?
例如:
下面这个差劲的实现是否已经足以满足equals()和hashCode()之间的契约了?
public int hashCode() {
return 91;
}