List去除重复数据的推荐方式 (*2)

发布时间 2023-11-28 18:03:58作者: 文白wb

List去除重复数据的推荐方式 (*2)

推荐理由:保证顺序的同时去掉重复元素。

综合考量:在不考虑顺序的情况下使用HashSet和循环可取,一定程度上提升性能。

 

方式1:使用java8新特性stream进行List去重(强烈建议,简便实用)

  要从arraylist中删除重复项,我们也可以使用java 8 stream api。使用steam的distinct()方法返回一个由不同数据组成的流,通过对象的equals()方法进行比较。

  收集所有区域数据List使用Collectors.toList()。

  Java程序,用于在不使用Set的情况下从java中的arraylist中删除重复项。

   ArrayList<Integer> numbersList = new ArrayList<>(Arrays.asList(1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8));
        System.out.println(numbersList);
        List<Integer> listWithoutDuplicates = numbersList.stream().distinct().collect(Collectors.toList());
        System.out.println(listWithoutDuplicates);

 

方式2:使用LinkedHashSet删除arraylist中的重复数据(经典推荐,易于理解直观)

  LinkedHashSet是在一个ArrayList删除重复数据的最佳方法。LinkedHashSet在内部完成两件事:

  • 删除重复数据
  • 保持添加到其中的数据的顺序

  Java示例使用LinkedHashSet删除arraylist中的重复项。在给定的示例中,numbersList是包含整数的arraylist,其中一些是重复的数字。

  例如1,3和5.我们将列表添加到LinkedHashSet,然后将内容返回到列表中。结果arraylist没有重复的整数。

        ArrayList<Integer> numbersList = new ArrayList<>(Arrays.asList(1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8));
        System.out.println(numbersList);
 
        LinkedHashSet<Integer> hashSet = new LinkedHashSet<>(numbersList);
        ArrayList<Integer> listWithoutDuplicates = new ArrayList<>(hashSet);
        System.out.println(listWithoutDuplicates);