java 利用set去重复数据

1.去重复字符串

	public static void main(String args[]){
		
		List<String> list=new ArrayList<String>();
		list.add("abc");
		list.add("ddd");
		list.add("ddd");
		
		System.out.println(">>>>>>>>>>>>去重复之前:>>>>>>>>>>>>>>");
		for( Iterator<String>   it = list.iterator();  it.hasNext(); )  
		{               
		    System.out.println("value="+it.next().toString());              
		}
		
		System.out.println(">>>>>>>>>>>>去重复之后:>>>>>>>>>>>>>>");
		Set<String> set=new HashSet<String>();
		set.addAll(list);
		
		for( Iterator<String>   it = set.iterator();  it.hasNext(); )  
		{               
		    System.out.println("value="+it.next().toString());              
		} 
		
	}
>>>>>>>>>>>>去重复之前:>>>>>>>>>>>>>>
value=abc
value=ddd
value=ddd
>>>>>>>>>>>>去重复之后:>>>>>>>>>>>>>>
value=abc
value=ddd

 2.如果是对象  需要重写对象的equals  hashCode  函数

package test;

public class A {

	public String id;
	public String name;
	
	public A(String id,String name){
		this.id=id;
		this.name=name;
	}
	
	public boolean equals(Object o){
		
		System.out.println("compare....");
		
		if(o.getClass()!=getClass())
			return false;
		else{
			A a=(A)o;
			if(id.equals(a.id))
				return true;
			else
				return false;
		}
	}
	
	public int hashCode() {
        return id.hashCode();
    }
	
	public String toString(){
		return "[id:"+id+",name:"+name+"]";
	}
}
public static void main(String args[]){
		
		List<A> list=new ArrayList<A>();
		list.add(new A("1","chq"));
		list.add(new A("1","chq"));
		list.add(new A("2","dddd"));
		
		Set<A>  set=new HashSet<A>(); 
		set.addAll(list);
		
		System.out.println("size="+ set.size() );  
		  
		for( Iterator<A>   it = set.iterator();  it.hasNext(); )  
		{               
		    System.out.println("value="+it.next().toString());              
		} 
		
	}
compare....
size=2
value=[id:1,name:chq]
value=[id:2,name:dddd]

猜你喜欢

转载自blog.csdn.net/caideb/article/details/81297082