JavaでhashCodeメソッドを上書きする方法は何ですか?
hashCode()メソッドを再度記述する必要がある場合は、次のステップに従う必要があります:
- ハッシュコードを取得する
- 整数
- ハッシュコード()
- 同値性を確認する
- ハッシュコード()
- 物品 (ぶっぴん)
- ハッシュ関数
hashCode()メソッドを再構築する方法を示す例を以下に示します。
public class Person {
private String name;
private int age;
// 构造函数和其他方法...
// 重写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()メソッドを使用してハッシュコードを計算しています。このメソッドは、渡されたパラメータに基づいてハッシュコードを自動的に計算します。この例では、名前と年齢のプロパティを使用してハッシュコードを計算し、これらのプロパティはequals()メソッドでも使用されています。
hashCode()メソッドをオーバーライドする際には、必ずequals()メソッドもオーバーライドすることが重要です。これにより、オブジェクトがハッシュセット(例:HashSet)内で適切に動作することが保証されます。