如何在Java中實(shí)現(xiàn)自定義類型的相等性比較

小樊
89
2024-08-16 08:54:37
欄目: 編程語言

要在Java中實(shí)現(xiàn)自定義類型的相等性比較,需要重寫自定義類型的equals()方法和hashCode()方法。equals()方法用于比較兩個(gè)對(duì)象是否相等,而hashCode()方法用于返回對(duì)象的哈希值,以便在哈希表等數(shù)據(jù)結(jié)構(gòu)中使用。

以下是一個(gè)示例實(shí)現(xiàn):

public class CustomType {
    private int id;
    private String name;

    // 構(gòu)造方法等

    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null || getClass() != obj.getClass()) {
            return false;
        }
        CustomType other = (CustomType) obj;
        return id == other.id && Objects.equals(name, other.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id, name);
    }
}

在上面的示例中,重寫了equals()方法和hashCode()方法,其中equals()方法比較了兩個(gè)CustomType對(duì)象的id和name屬性是否相等,而hashCode()方法返回了對(duì)象的哈希值,通過id和name屬性計(jì)算得到。

通過重寫equals()方法和hashCode()方法,可以確保在使用自定義類型進(jìn)行相等性比較時(shí),能夠正確地判斷對(duì)象是否相等。

0