package collection.list;
import java.util.HashSet;
import java.util.Iterator;
/**
* 自定义类,判断:姓名和年龄相同即为相同,
* 复写hashCode()方法,和equasl()方法,
* 先判断hashCode()值是否相同,相同的话在判断equals()方法
* @author zjw
*
*/
public class HashSet_qu_duixiang {
public static void main(String[] args) {
HashSet hs=new HashSet();
hs.add(new Person1("a",11));
hs.add(new Person1("b",12));
hs.add(new Person1("b",12));
// hs.add(new Person1("c",13));
// hs.add(new Person1("d",14));
// hs.add(new Person1("e",15));
// hs.add(new Person1("f",16));
Iterator iter=hs.iterator();
while(iter.hasNext()){
Person1 pp=(Person1) iter.next();
System.out.println(pp.getName()+"------"+pp.getAge());
}
}
}
class Person1{
private String name;
private int age;
public Person1(String name,int age){
this.name=name;
this.age=age;
}
public int hashCode(){//复写Object类中hashCode()方法,该方法是底层被调用的
return this.name.hashCode()+this.age*39;//注意*39,是为了区分,这样不容易一样
}
//复写equals()方法,重新定义比较规则
public boolean equals(Object obj){
if(!(obj instanceof Person1)){
return false;
}
Person1 p=(Person1)obj;
return this.name.equals(p.getName())&& this.age==p.getAge();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
黑马程序员——HashSet自定义类去除重复
最新推荐文章于 2022-10-08 22:35:59 发布