重寫 equals 與 hashCode

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章