重写hashcode()方法
时间: 2023-12-06 21:05:39 浏览: 39
在 Java 中,重写 `hashCode()` 方法通常需要遵循以下几个步骤:
1. 定义一个变量 `result`,并初始化为一个质数,例如 17。
2. 对于对象的每个重要属性(影响对象相等性的属性),计算它们的哈希码并将它们组合起来:
```java
result = 31 * result + Objects.hashCode(this.property1);
result = 31 * result + Objects.hashCode(this.property2);
```
其中,31 是一个质数,用于避免哈希冲突。
3. 如果对象存在一个可能为 `null` 的重要属性,需要特殊处理:
```java
result = 31 * result + (this.property3 == null ? 0 : this.property3.hashCode());
```
4. 最后返回 `result`。
完整的示例代码如下:
```java
@Override
public int hashCode() {
int result = 17;
result = 31 * result + Objects.hashCode(this.property1);
result = 31 * result + Objects.hashCode(this.property2);
result = 31 * result + (this.property3 == null ? 0 : this.property3.hashCode());
return result;
}
```
需要注意的是,重写 `hashCode()` 方法时,也需要重写 `equals()` 方法。两个方法的实现应该保持一致,即如果两个对象相等,则它们的哈希码也应该相等。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)