java删除List中所有重复元素

義往昔 1月前 ⋅ 26 阅读

本文介绍如何删除List中重复元素,分别介绍普通的java方式、Guava以及java8 Lambda表达式方式。

普通java方式

使用标准java集合框架的Set删除List中的重复元素:

public void givenListContainsDuplicates_whenRemovingDuplicatesWithPlainJava_thenCorrect() {
    List<Integer> listWithDuplicates = Lists.newArrayList(0, 1, 2, 3, 0, 0);
    List<Integer> listWithoutDuplicates = new ArrayList<>(new HashSet<>(listWithDuplicates));

    assertThat(listWithoutDuplicates, hasSize(4));
}

上面代码可以看到,原来list保持不变。

使用Guava方式

Guava提供几乎相同的方式:

public void givenListContainsDuplicates_whenRemovingDuplicatesWithGuava_thenCorrect() {
    List<Integer> listWithDuplicates = Lists.newArrayList(0, 1, 2, 3, 0, 0);
    List<Integer> listWithoutDuplicates = Lists.newArrayList(Sets.newHashSet(listWithDuplicates));

    assertThat(listWithoutDuplicates, hasSize(4));
}

同样,原list保持不变。

java8 Lambda表达式

最后,我们看看java8 lambda表达式实现方案;我们知道Stream Api提供了distinct()方法,其返回不重复元素组成的stream。

public void givenListContainsDuplicates_whenRemovingDuplicatesWithJava8_thenCorrect() {
    List<Integer> listWithDuplicates = Lists.newArrayList(1, 1, 2, 2, 3, 3);
    List<Integer> listWithoutDuplicates = listWithDuplicates.stream()
     .distinct()
     .collect(Collectors.toList());
}

如你所见,我们有三种方式实现删除list中重复元素。

https://blog.csdn.net/neweastsun/article/details/79776728

 


注意:本文归作者所有,未经作者允许,不得转载

全部评论: 0

    我有话说: