循环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()); }}