1. 程式人生 > >JAVA-去掉LIST中重複值

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); } } }