要重写hashCode()
方法,需要遵循以下几个步骤:
hashCode()
方法的声明,返回类型为int
。hashCode()
方法中计算一个唯一的整数值,用于表示对象的哈希码。可以根据对象中的属性值计算哈希码。equals()
方法中被判定为相等,那么它们的hashCode()
方法也应该返回相等的哈希码。Objects
类中的hash()
方法来计算哈希码。下面是一个示例,展示了如何重写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()
方法来计算哈希码。这个方法会根据传入的参数自动计算哈希码。在这个例子中,我们使用了name
和age
属性来计算哈希码,这两个属性也在equals()
方法中被使用。
注意:重写hashCode()
方法的同时,一定要重写equals()
方法,以确保对象在哈希集合(如HashSet
)中的正确行为。