我有一堂课
class Pair<T>{
private T data;
private T alternative;
}
如果两个对对象相等
this.data.equals(that.data) && this.alternative.equals(that.alternative) ||
this.data.equals(that.alternative) && this.alternative.equals(that.data)
我在正确实现hashCode()部分时遇到了困难。任何建议,将不胜感激
最佳答案
这应该可以解决问题:
@Override
public int hashCode() {
return data.hashCode() * alternative.hashCode();
}
由于要将两个字段都包含在等式中,因此需要将两个字段都包含在
hashCode
方法中。如果不相等的对象最终具有相同的哈希码是正确的,但是根据您的方案,相等的对象将始终使用此方法最终具有相同的哈希码。