怎么覆盖hashCode方法 根据Key值生成哈希码
时间: 2024-01-25 15:05:14 浏览: 104
在Java中,hashCode()方法用于生成对象的哈希码。如果我们想要在使用hashCode()方法时指定特定的哈希码生成算法,我们需要在类中重写该方法。以下是一个基本的例子:
```java
public class MyClass {
private int id;
private String name;
public MyClass(int id, String name) {
this.id = id;
this.name = name;
}
@Override
public int hashCode() {
int result = id;
result = 31 * result + (name != null ? name.hashCode() : 0);
return result;
}
}
```
在上面的例子中,我们使用id和name字段计算了哈希码。在hashCode()方法中,我们将id作为初始值,然后使用31乘以该值并加上name字段的哈希码。这是一个通用的哈希码生成算法,它可以生成相对唯一的哈希码。
如果你想要根据对象的Key值生成哈希码,可以使用Key值的哈希码作为对象的哈希码。例如,如果你的对象具有一个Key字段,你可以使用以下代码:
```java
@Override
public int hashCode() {
return key.hashCode();
}
```
在这个例子中,我们使用Key字段的哈希码作为对象的哈希码。这将确保对象在使用HashMap或HashTable等数据结构时能够正确地定位。
阅读全文