要在Java中實現自定義類型的相等性比較,需要重寫自定義類型的equals()方法和hashCode()方法。equals()方法用于比較兩個對象是否相等,而hashCode()方法用于返回對象的哈希值,以便在哈希表等數據結構中使用。
以下是一個示例實現:
public class CustomType {
private int id;
private String name;
// 構造方法等
@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()方法比較了兩個CustomType對象的id和name屬性是否相等,而hashCode()方法返回了對象的哈希值,通過id和name屬性計算得到。
通過重寫equals()方法和hashCode()方法,可以確保在使用自定義類型進行相等性比較時,能夠正確地判斷對象是否相等。