在重写equals方法的同时,必须重写hashCode方法,equals 方法对比的相同的字段也可根据业务要求做出调整
[参考](https://www.cnblogs.com/dolphin0520/p/3681042.html)
要点:
1.重写 hashCode 与 equals 方法
2.内部类
package com;
import java.util.Objects;
//测试内部类
class people {
public String name;
public Integer age;
public people(String name, Integer age) {
this.name = name;
this.age = age;
}
//利用idea 自动生成的equals与hashCode 方法
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
people people = (people) o;
return Objects.equals(name, people.name) &&
Objects.equals(age, people.age);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
public class hashCodeRewrite {
public static void main(String[] args) {
people p1 = new people("aaa", 22);
people p2 = new people("aaa", 22);
people p3 = new people("bbb", 22);
System.out.println(p1.hashCode() == p2.hashCode() ? true : false);
System.out.println(p1.hashCode() == p3.hashCode() ? true : false);
System.out.println(p1.equals(p2) ? true : false);
System.out.println(p1.equals(p3) ? true : false);
System.out.println("p1的hashCode值是:" + p1.hashCode() + "\n" + "p2的hashCode值是:" + p2.hashCode() + "\n" +
"p3的hashCode值是: " + p3.hashCode());
}
}
重写hashCode值生成方法