Skip to main content
 首页 » 编程设计

java删除List中所有重复元素

2022年07月19日155daizhj

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
阅读延展