Java——hashSet集合去重分析
一、hashSet集合去重:
1)通过hashCode和equals两方法保证数据的唯一性;
2)如果hashCode相同才判断元素的equals;
二、代码:
1、实体类:重写hashCode和equals方法;
public 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; } //重写hashCode方法 public int hashCode(){ System.out.println(this.name+".....hashCode"); return this.name.hashCode()+this.age; } //重写equals方法 public boolean equals(Object obj){ if (!(obj instanceof Person)) return false; Person p=(Person)obj; System.out.println(this.name+"..equals.."+p.name); return this.name.equals(p.name) && this.age==p.age; } }
2、测试类:
public class Test { public static void main(String[] args) { HashSet hs=new HashSet(); hs.add(new Person("zs0",0)); hs.add(new Person("zs1",1)); hs.add(new Person("zs1",1)); hs.add(new Person("zs2",2)); for ( Iterator it=hs.iterator();it.hasNext();){ Person p=(Person)it.next(); System.out.println(p.getName()+"....."+p.getAge()); } } }