java重写hashcode
时间: 2023-09-14 08:11:37 浏览: 80
java中为何重写equals时必须重写hashCode方法详解
在 Java 中,hashCode() 方法用于返回对象的哈希码。如果两个对象相等,它们的哈希码应该相同。因此,如果你想在自己的类中实现 hashCode() 方法,你需要确保它满足以下规则:
1. 同一个对象多次调用 hashCode() 方法应该返回相同的值。
2. 如果两个对象相等,它们的 hashCode() 方法必须返回相同的值。
3. 如果两个对象不相等,它们的 hashCode() 方法尽可能返回不同的值。
实现 hashCode() 方法的一般步骤如下:
1. 定义一个 int 类型的变量 result,初始值为一个非零奇数,例如 17。
2. 对于对象中每个重要的域(即会影响对象相等性的域)进行计算,可以使用 Objects 类的 hash 方法。例如,如果你的对象有两个域 x 和 y,那么可以这样计算:result = 31 * result + Objects.hash(x, y)。
3. 如果你的类是不可变的,那么可以将 result 缓存起来以提高性能。
4. 返回 result。
下面是一个示例:
```java
public class MyClass {
private int x;
private String y;
@Override
public int hashCode() {
int result = 17;
result = 31 * result + Integer.hashCode(x);
result = 31 * result + Objects.hashCode(y);
return result;
}
}
```
阅读全文