要重寫hashCode()
方法,需要遵循以下幾個步驟:
hashCode()
方法的聲明,返回類型為int
。hashCode()
方法中計算一個唯一的整數(shù)值,用于表示對象的哈希碼??梢愿鶕?jù)對象中的屬性值計算哈希碼。equals()
方法中被判定為相等,那么它們的hashCode()
方法也應該返回相等的哈希碼。Objects
類中的hash()
方法來計算哈希碼。下面是一個示例,展示了如何重寫hashCode()
方法:
public class Person {
private String name;
private int age;
// 構(gòu)造函數(shù)和其他方法...
// 重寫hashCode()方法
@Override
public int hashCode() {
return Objects.hash(name, age);
}
// 重寫equals()方法
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}
Person person = (Person) obj;
return age == person.age && Objects.equals(name, person.name);
}
}
在上面的示例中,hashCode()
方法使用了Objects.hash()
方法來計算哈希碼。這個方法會根據(jù)傳入的參數(shù)自動計算哈希碼。在這個例子中,我們使用了name
和age
屬性來計算哈希碼,這兩個屬性也在equals()
方法中被使用。
注意:重寫hashCode()
方法的同時,一定要重寫equals()
方法,以確保對象在哈希集合(如HashSet
)中的正確行為。