JAVA-去掉LIST中重複值

來自CSDN論壇 進行了一下總結。
1.通過循環暴力刪除
2.利用hashset特性(無重複對象)


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

public class my_test3 {
    public static void main(String args[]) {
        List<String> list = new ArrayList<String>();
        String[] string = { "AAAA", "AAAA","d","AAAA","BBBB", "BBBB", "CCCC",
                            "CCCC","d","d" };
        for(int i=0;i<string.length;i++)
        list.add(string[i]);

        //forDel(list);                         //--- 1. 循環刪除重複原素
        //removeDuplicate(list);                //--- 2. 通過hashset剔除 (set中沒有重複對象)
        //removeDuplicateWithOrder(list);       //--- 3. 通過Iterator  其實也是根據set性質
        //removeByCollection(string,list);      //--- 4. 通過collection的frequency方法
        list = new ArrayList<String>(new HashSet<String>(list));  //---- 5.最爲簡單的方法
        System.out.println(list);           //---打印list
    }

    //--- 1. 循環刪除重複原素
    public static void forDel(List<String> list){
        for(int i=0; i<list.size() -1; i++){
            //for(int j=i+1;j<list.size();j++){
            for(int j=list.size()-1;j>i;j--){
                if(list.get(j).equals(list.get(i))){
                    list.remove(j);
                }
            }
        }
    }
    //---- 2.通過hashset剔除
    public   static   void  removeDuplicate(List<String> list)   { 
        HashSet<String> h  =   new  HashSet<String>(list); 
        list.clear(); 
        list.addAll(h); 
    } 
    //---- 3.通過Iterator  其實也是根據set性質
    public   static   void  removeDuplicateWithOrder(List<String> list) {
        Set<String> set = new HashSet<String>();
        List<String> newList = new ArrayList<String>();
        for(Iterator<String> iter = list.iterator();iter.hasNext();){
            String element  = iter.next();
            if(set.add(element))
                newList.add(element);
        }
            list.clear();
            list.addAll(newList);
    }
    //---- 4.Collections.frequency方法
    public static void removeByCollection(String string[],List<String> list){
        list.clear();
        for(String s: string){
            if(Collections.frequency(list, s) < 1) list.add(s);
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章