重写equals方法和hashCode方法
时间: 2024-05-05 11:16:53 浏览: 102
java中重写equals()方法的同时要重写hashcode()方法(详解)
重写equals方法:
1. 首先判断两个对象是否为同一对象,如果是则直接返回true。
2. 判断两个对象是否为同一类型,如果不是则直接返回false。
3. 将传入的对象强制类型转换为当前类型,判断是否为null,如果是则返回false。
4. 根据对象的属性值进行逐一比较,如果有属性值不相等则返回false,否则返回true。
以下是一个示例:
```
public class Person {
private String name;
private int age;
// 省略构造方法和getter/setter方法
@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方法:
1. 定义一个变量result,初始化为一个素数,比如31。
2. 将对象的每一个属性的hashCode计算出来,然后将它们组合起来。
3. 对组合后的结果乘以素数result。
4. 返回结果。
以下是一个示例:
```
public class Person {
private String name;
private int age;
// 省略构造方法和getter/setter方法
@Override
public int hashCode() {
int result = 31;
result = result * Objects.hashCode(name);
result = result * age;
return result;
}
}
```
阅读全文