JAVA-去掉LIST中重複值
阿新 • • 發佈:2019-02-07
來自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);
}
}
}