Set 对重复对象排除,只可以用基本类型,否则必须重写equals方法
package net.hlj.haoka.taocanzu.dao.impl;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import net.hlj.haoka.model.ScombModel;
class Student
{
String name ;
int age;
public Student()
{
}
public Student(String name, int age)
{
this.name = name ;
this.age = age ;
}
public boolean equals(Object obj)
{
?if (this == obj)
??return true;
?if (obj == null)
??return false;
?if (getClass() != obj.getClass())
??return false;
?final Student other = (Student) obj;
?if (name != null ? !name.equals(other.name) : other.name != null)
??return false;
?return true;
}
public int hashCode() {
return 0;
}
public static void main(String[] args) {
?? // TODO Auto-generated method stub
??? Set? set=new LinkedHashSet();
??? set.add(new Student("ty",20));
??? set.add(new Student("ty2",21));
//??? set.add("cde");
//??? set.add("abc");
//??? set.add("cde");
//??? set.add("efg");
//??? set.add("fgh");???
//??? set.add("abc"); //重复的abc,set会自动将其去掉??
??? System.out.println("size="+ set.size() );
???? List list = new ArrayList();
???? list.add(new Student("ty2",21));
//???? list.add("abc");
//???? list.add("aaa");
//???? list.add("fff");
???? set.addAll(list); //将list中的值加入set,并去掉重复的abc
????????? System.out.println("size="+ set.size() );
???????? for( Iterator?? it = set.iterator();? it.hasNext(); )
???????? {?? Student s = (Student) it.next();?????????
//???????????? System.out.println("value="+it.next().toString());
???????????? System.out.println("name="+s.name+"?? age="+s.age);
???????? }
? }???
?}
Set是根据equals方法排除重复数据的,而equals方法是根据内容比较,对于基本类型是比较的基本类型的内容,而对于对象也必须比较对象的内容,所以必须重写equals方法实现Set对重复对象的排除。