List集合去重的几种方法

1丶使用LinkedHashSet删除arraylist中的重复数据

说明 : LinkedHashSet在内部完成两件事 :
1丶删除重复数据
2丶保持添加到其中的数据的顺序

    @Test
    public void test8() {
        // 定义集合
        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);
    }
    
结果为:
[1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8]
[1, 2, 3, 4, 5, 6, 7, 8]
2丶使用java8新特性stream进行List去重

说明 : 使用steam的distinct()方法返回一个由不同数据组成的流,通过对象的equals() 方法进行比较。

	@Test
    public void test8() {
        // 定义集合
        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);
    }

结果为:
[1, 1, 2, 3, 3, 3, 4, 5, 6, 6, 6, 7, 8]
[1, 2, 3, 4, 5, 6, 7, 8]

至于循环遍历的方式, 这里不做举例了, 此种方法效率低, 性能消耗大, 万不得已不可取 !

上一篇:EasyPoi


下一篇:集合Set:HashSet、LinkedHashSet