在HashSet集合中添加三个Person对象,把姓名相同的人当做同一个人,禁止重复添加。可以定义Per son类中包含name和age属性,重写hashCode()方法和equals()方法,针对Person类的name属性进行比较,如果name相同,hashCode()方法的返回值相同,equals方法返回true。
public class Person {
private String name;
private Integer age;
public Person(String name, Integer age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Person)) return false;
Person person = (Person) o;
return Objects.equals(name, person.name);
}
@Override
public int hashCode() {
return Objects.hash(name);
}
public static void main(String[] args) {
Set<Person> personSet = new HashSet<>();
Person person = new Person("张三",6);
Person person2 = new Person("李四",6);
Person person3 = new Person("张三",8);
Person person4 = new Person("李四",9);
personSet.add(person);
personSet.add(person2);
personSet.add(person3);
personSet.add(person4);
personSet.forEach(item ->{
System.out.println(item);
});
}
}