至于Person的定义:
public class Person {
private int id;
private int characteristics;
public boolean equals (Object obj) {
if (obj == this) {
return true;
}
if (obj instanceof Person) {
if (id == ((Person) obj).id) {
return true;
} else if (characteristics == ((Person) obj).characteristics) {
return true;
}
}
return false;
}
}
导致2个Person对象a并且如果返回b必须具有相同的哈希码,我应该如何实现该方法?a.equals(b)truehashCode
解决方案
equals根据Java的等价协议,我的方法实现不正确:传递性不满足:a.id = 1, a.characteristic = 2, b.id = 1, b.characteristic = 3, c.id = 2, c.characteristic = 3; a.equals(b) == true, b.equals(c) == true, 但是a.equals(c) == false。