import java.util.Objects;
public class Person extends Object {
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;//如果比较的是同一个对象返回true
if (!(o instanceof Person)) return false;//如果比较的不是Person类返回false
Person person = (Person) o;//向下转型
return age == person.age && Objects.equals(name, person.name);//比较两者的变量
}
@Override
public int hashCode() {
return Objects.hash(name, age);//重写了hashcode方法 使地址值转化哈希值变成了根据变量转化哈希值
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
import java.util.*;
public class FuXi2 {
public static void main(String[] args) {
HashSet<Person> p3 = new HashSet<>();
Person p = new Person("xxx", 18);
Person p1 = new Person("xxx", 18);
System.out.println(p.hashCode());
System.out.println(p1.hashCode());
boolean b = p.hashCode() == p1.hashCode();//根据重写的hashcode方法 得出两个对象参数相同哈希值也相同
System.out.println(b);
p3.add(p);
p3.add(p1);
boolean equals = p.equals(p1);
System.out.println(p.equals(p1));//注意重写了equals方法 比较的使对象的变量
}
}
如题