循环list中的所有元素然后删除重复

  1. public static List removeDuplicate(List list) {
  2. int length = list.size() - 1;
  3. for (int i = 0; i < length; i++) {
  4. for (int j = length; j > i; j--) {
  5. if (Objects.equals(list.get(j), list.get(i))) {
  6. list.remove(j);
  7. }
  8. }
  9. }
  10. return list;
  11. }

通过HashSet剔除重复元素

  1. public static List removeDuplicate(List list) {
  2. HashSet h = new HashSet(list);
  3. list.clear();
  4. list.addAll(h);
  5. return list;
  6. }

删除ArrayList中重复元素,保持顺序

  1. // 删除ArrayList中重复元素,保持顺序
  2. public static void removeDuplicateWithOrder(List list) {
  3. Set set = new HashSet();
  4. List newList = new ArrayList();
  5. for (Iterator iter = list.iterator(); iter.hasNext(); ) {
  6. Object element = iter.next();
  7. if (set.add(element))
  8. newList.add(element);
  9. }
  10. list.clear();
  11. list.addAll(newList);
  12. System.out.println(" remove duplicate " + list);
  13. }

把list里的对象遍历一遍,用list.contain(),如果不存在就放入到另外一个list集合中

  1. public static List removeDuplicate(List list) {
  2. List listTemp = new ArrayList();
  3. int length = list.size();
  4. for (int i = 0; i < length; i++) {
  5. if (!listTemp.contains(list.get(i))) {
  6. listTemp.add(list.get(i));
  7. }
  8. }
  9. return listTemp;
  10. }

新版本的 JDK 可以支持 Stream 流操作,因此集合去重可以简单的使用下述语句来实现。

  1. list = list.stream().distinct().collect(Collectors.toList());

创建一个测试类,进行测试

  1. import java.util.*;
  2. import java.util.stream.Collectors;
  3. class Scratch {
  4. public static void main(String[] args) {
  5. List<String> list = new ArrayList<String>();
  6. list.add("李逵");
  7. list.add("李鬼");
  8. list.add("宋江");
  9. list.add("张顺");
  10. // 重复数据
  11. list.add("宋江");
  12. list.add("张顺");
  13. list = removeDuplicate(List list);
  14. // 或者可以这样写
  15. // list = list.stream().distinct().collect(Collectors.toList());
  16. }
  17. }