在 Java 中,equals()
方法用于比較兩個對象是否相等
重寫 equals()
方法時,請確保遵循以下規則:
在實現 equals()
方法時,通常需要比較對象的屬性。可以使用 ==
運算符比較基本數據類型(如 int、float、double 等),使用 equals()
方法比較引用數據類型(如 String、Date 等)。
當重寫 equals()
方法時,還需要重寫 hashCode()
方法。這是因為散列表(如 HashMap、HashSet 等)依賴于 hashCode()
方法來存儲和檢索對象。如果兩個對象相等(即 equals()
方法返回 true),那么它們的 hashCode()
方法必須返回相同的值。
以下是一個示例,展示了如何在 Java 類中正確地實現 equals()
方法:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}
Person person = (Person) obj;
if (age != person.age) {
return false;
}
return name != null ? name.equals(person.name) : person.name == null;
}
@Override
public int hashCode() {
int result = name != null ? name.hashCode() : 0;
result = 31 * result + age;
return result;
}
}
在這個示例中,我們創建了一個名為 Person
的類,其中包含 name
和 age
屬性。我們重寫了 equals()
方法來比較兩個 Person
對象是否相等,同時還重寫了 hashCode()
方法。