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对重复对象的排除。

你可能感兴趣的:(java,DAO,.net)