天天看點

java list集合三種去重方法

public class ListDistinct <T>{

    public List<T> distinctBySetOrder(List<T> list){

        Set<T> set = new  HashSet<T>(); 

        List<T> newList = new  ArrayList<T>(); 

        for (T t :list) {

           if(set.add(t)){

               newList.add(t);

           }

        }

        return newList;

    }

    public List<T> distinctBySet(List<T> list){

        return new ArrayList<T>(new HashSet<T>(list));

    }

    public List<T> distinctByANewList(List<T> list){

        List<T> newList = new  ArrayList<T>(); 

        for(T t : list){

            if(!newList.contains(t)){

                newList.add(t);

            }

        }

        return newList;

    }

    public static void main(String[] args){

        ListDistinct<String> ld = new ListDistinct<String>();

        List<String> list  =   new  ArrayList<String>(); 

        list.add("zhang");

        list.add("zhang");

        list.add("ss");

        list.add("ss");

        list.add("2s");

        list.add("s3");

        System.out.println("1:" + ld.distinctBySetOrder(list).toString());

        System.out.println("2:" + ld.distinctBySet(list).toString());

        System.out.println("3:" + ld.distinctByANewList(list).toString());

    }

}