@Getter
@Setter
public class Person {
private String idCard;
private String name;
@Override
public boolean equals(Object other) {
// 同一对象
if (this == other) {
return true;
}
// 不同类型
if (!(other instanceof Person)) {
return false;
}
Person o = (Person) other;
return Objects.equals(this.idCard, o.idCard)
&& Objects.equals(this.name, o.name);
}
@Override
public int hashCode() {
return Objects.hash(idCard, name);
}
}
重写了equals方法,需要重写hashCode方法
是因为类似 HashMap 之类的 hash 操作,当 hashCode 不一致时,不会去比较 equals,导致 equals 认为相同的对象,会 put 两个 key。