日期:2014-05-17  浏览次数:20633 次

查找list中的重复值 要考虑效率
Java code

import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;


public class ListAndSet {
    public static void main(String[] args) {
        
        long startDate=new Date().getTime();
        
        List set=new ArrayList<String>();
        
        List li=new ArrayList<String>();
        
        for (int i = 1; i <=110000; i++) {
            set.add(i+"");    
        }
        
        for (int i = 1; i <=110000; i++) {
            li.add(i+"");
            if(i==200)
            {
                li.add(200+"");
            }
            if(i==500)
            {
                li.add(500+"");
            }
            if(i==203)
            {
                li.add(203+"");
            }
        }
        for (Object object : set) {
               li.remove(object);
               // System.out.println(iterator.next());
        }
        
        for (Object object : li) {
            System.out.println("重复值有:"+object);
        }
        long endDate=new Date().getTime();
        System.out.println("共花时间:"+(endDate-startDate));
    }
    
    
    
    
    
    
}




------解决方案--------------------
Java code

    public static void main(String[] args) throws Exception {

        List<Integer> list = new ArrayList<Integer>();
        list.add(1);
        list.add(2);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(4);
        list.add(5);

        Set<Integer> set = new HashSet<Integer>();
        for (int i : list) {
            if (!set.add(i)) {
                System.out.println(i);
            }
        }
    }