重写hashcode
时间: 2023-08-09 10:05:21 浏览: 105
在Java中,重写hashCode()方法需要遵循以下几个原则:
1. 如果两个对象相等,那么它们的hashCode()方法返回的值必须相等。
2. 如果两个对象的hashCode()方法返回值相等,它们并不一定相等,此时需要调用equals()方法进行比较。
3. hashCode()方法的返回值应该尽可能地分散,避免不必要的哈希冲突。
下面是一个简单的示例,演示如何重写hashCode()方法:
```java
public class Person {
private String name;
private int age;
// 构造函数、getters和setters方法省略
@Override
public int hashCode() {
int result = 17;
result = 31 * result + name.hashCode();
result = 31 * result + age;
return result;
}
@Override
public boolean equals(Object obj) {
if (obj == null) return false;
if (obj == this) return true;
if (!(obj instanceof Person)) return false;
Person other = (Person) obj;
return this.name.equals(other.name) && this.age == other.age;
}
}
```
在这个例子中,我们使用了常见的hashCode()计算方式,将result初始化为一个质数17,然后使用31乘以result再加上name的hashCode()值和age值的哈希码,最后返回result。注意到我们也重写了equals()方法,以保证hashCode()和equals()方法的一致性。
阅读全文