在HashSet集合中添加三个Person对象,把姓名相同的人当做同一个人,禁止重复添加。
Person类中定义name和age属性,重写hashCode()方法和equals()方法,针对Person类的name属性进行比较,如果name相同,hashCode()方法的返回值相同,equals方法返回true。
import java.util.Set;
import java.util.HashSet;
import java.util.Iterator;
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 void setAge(int age){
this.age=age;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
public int hashCode(){ //hashCode判断name属性不能重复
return name.hashCode();
}
public boolean equals(Object obj){
if(this == obj){ //判断是否是同一对象
return true;
}
if(!(obj instanceof Person)){ //判断是否是Person对象
return false;
}
Person p = (Person) obj; //将obj强制转换成Person类型
boolean temp=this.name.equals(p.name);
return temp;
}
}
public class Text1 {
public static void main(String[] args){
Person p1 = new Person("LiMing",21);
Person p2 = new Person("LiHua",22);
Person p3 = new Person("LiJie",23);
//插入
Set<Person> set = new HashSet<Person>();
set.add(p1);
set.add(p2);
set.add(p3);
System.out.println(set.size());
//遍历
Iterator<Person> iterator = set.iterator();
while(iterator.hasNext()){
Person person = (Person) iterator.next();
System.out.println(person.getName()+";"+person.getAge());
}
}
}