@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。