package com.lxz.test;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
/**
* description: List去重
* date: 2018年2月10日
* author: www.luxinzhi.com
*/
public class ListRemoveDuplicate {
// Java中去重的方法有很多,常用的方法主要有下面4种
// 1. 循环list中的所有元素然后删除重复元素
@SuppressWarnings("rawtypes")
public static List removeDuplicate1(List list) {
for (int i = 0; i < list.size() - 1; i++) {
for (int j = list.size() - 1; j > i; j--) {
if (list.get(j).equals(list.get(i))) {
list.remove(j);
}
}
}
return list;
}
// 2. 通过HashSet踢除重复元素
@SuppressWarnings({ "unchecked", "rawtypes" })
public static List removeDuplicate2(List list) {
HashSet set = new HashSet(list);
// 保持原有顺序
// HashSet set = new LinkedHashSet(list);
list.clear();
list.addAll(set);
return list;
}
// 3. 删除ArrayList中重复元素,保持原有顺序
@SuppressWarnings({ "unchecked", "rawtypes" })
public static List removeDuplicateWithOrder3(List list) {
Set set = new HashSet();
List newList = new ArrayList();
for (Iterator iter = list.iterator(); iter.hasNext();) {
Object element = iter.next();
if (set.add(element)) {
newList.add(element);
}
}
list.clear();
list.addAll(newList);
return list;
}
// 4. 把list里的对象遍历一遍,用list.contain(),如果不存在就放入到另外一个list集合中
@SuppressWarnings({ "unchecked", "rawtypes" })
public static List removeDuplicate4(List list) {
List newList = new ArrayList();
for (int i = 0; i < list.size(); i++) {
if (!newList.contains(list.get(i))) {
newList.add(list.get(i));
}
}
return newList;
}
@SuppressWarnings("rawtypes")
public static void main(String[] args) {
List list = new ArrayList<>();
list.add("aaa");
list.add("ccc");
list.add("bbb");
list.add("ccc");
list.add("ddd");
list.add("aaa");
List list1 = removeDuplicate1(list);
List list2 = removeDuplicate2(list);
List list3 = removeDuplicateWithOrder3(list);
List list4 = removeDuplicate4(list);
System.out.println("--------1--------");
for (int i = 0; i < list1.size(); i++) {
System.out.println(list1.get(i));
}
System.out.println("--------2--------");
for (int i = 0; i < list2.size(); i++) {
System.out.println(list2.get(i));
}
System.out.println("--------3--------");
for (int i = 0; i < list3.size(); i++) {
System.out.println(list3.get(i));
}
System.out.println("--------4--------");
for (int i = 0; i < list4.size(); i++) {
System.out.println(list4.get(i));
}
}
}
输出结果
--------1--------
aaa
ccc
bbb
ddd
--------2--------
aaa
ccc
bbb
ddd
--------3--------
aaa
ccc
bbb
ddd
--------4--------
aaa
ccc
bbb
ddd