java删除List中所有重复元素
本文介绍如何删除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中重复元素。
总结
本文介绍了三种方式删除list中重复元素,你喜欢那种呢?
本文参考链接:https://blog.csdn.net/neweastsun/article/details/79776728