学习HashSet中,重复对象的消除。
HashSet保存对象时,利用hashCode()和equals()方法,对重复元素进行比较,不保存重复元素。
hashCode()和equals()方法 可以使用IDE自动生成。
package com.tencent.baosen.collection;
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
/**
* 学习HashSet中,重复对象的消除。
* HashSet保存对象时,利用hashCode()和equals()方法,对重复元素进行比较,不保存重复元素。
*/
class Person{
private String name;
private int age;
public Person(String name, int age){
this.name = name;
this.age = age;
}
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
public void setAge(int age){
this.age = age;
}
public int getAge(){
return this.age;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Person)) return false;
Person person = (Person) o;
return getAge() == person.getAge() &&
Objects.equals(getName(), person.getName());
}
@Override
public int hashCode() {
return Objects.hash(getName(), getAge());
}
@Override
public String toString() {
return "姓名:"+this.name +","+ "年龄:"+this.age;
}
}
public class ObjectSaveToHashSet {
public static void main(String[] args) {
Set<Person> all = new HashSet<>();
all.add(new Person("张三",19));
all.add(new Person("李四",19));
all.add(new Person("王五",20));
all.add(new Person("王五",20));
all.forEach(System.out::println);
}
}