* HashSet 元素重复指的是地址值(哈希值);
* 如果想去除相同元素,要先修改对象的hashCode方法(通过制定对象获得相同哈希值),
* 再重写equals方法;
需求:使用HashSet存储对象Person;过滤相同元素;
class Person{
private String name;
private int age;
Person(String name,int age)
{
this.name=name;
this.age=age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public int hashCode(){
return this.name.hashCode()+this.age*37;
}
public boolean equals(Object obj){
if(!(obj instanceof Person)){
return false;
}else{
Person p=(Person)obj;
return this.getName().equals(p.getName())&&this.getAge()==(p.getAge());
}
}
}
public class HashSetDemo {
public static void main(String[] args) {
HashSet hh=new HashSet();
hh.add(new Person("lisi01",12));
hh.add(new Person("lisi02",14));
hh.add(new Person("lisi02",14));
hh.add(new Person("lisi02",14));
Iterator it=hh.iterator();
while(it.hasNext())
{
Person obj=(Person)it.next();
System.out.println(obj.getName()+":"+obj.getAge());
}
}
}