循环list中的所有元素然后删除重复
public static List removeDuplicate(List list) {
int length = list.size() - 1;
for (int i = 0; i < length; i++) {
for (int j = length; j > i; j--) {
if (Objects.equals(list.get(j), list.get(i))) {
list.remove(j);
}
}
}
return list;
}
通过HashSet剔除重复元素
public static List removeDuplicate(List list) {
HashSet h = new HashSet(list);
list.clear();
list.addAll(h);
return list;
}
删除ArrayList中重复元素,保持顺序
// 删除ArrayList中重复元素,保持顺序
public static void removeDuplicateWithOrder(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);
System.out.println(" remove duplicate " + list);
}
把list里的对象遍历一遍,用list.contain(),如果不存在就放入到另外一个list集合中
public static List removeDuplicate(List list) {
List listTemp = new ArrayList();
int length = list.size();
for (int i = 0; i < length; i++) {
if (!listTemp.contains(list.get(i))) {
listTemp.add(list.get(i));
}
}
return listTemp;
}
新版本的 JDK 可以支持 Stream 流操作,因此集合去重可以简单的使用下述语句来实现。
list = list.stream().distinct().collect(Collectors.toList());
创建一个测试类,进行测试
import java.util.*;
import java.util.stream.Collectors;
class Scratch {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("李逵");
list.add("李鬼");
list.add("宋江");
list.add("张顺");
// 重复数据
list.add("宋江");
list.add("张顺");
list = removeDuplicate(List list);
// 或者可以这样写
// list = list.stream().distinct().collect(Collectors.toList());
}
}