從Java中的列表中刪除所有重複項

本快速教程將向您展示如何清除List中的重複元素-首先使用純Java,然後使用Guava,最後使用基於Java 8 Lambda的解決方案。

本文是Baeldung上“ Java – Back to Basic ”系列文章的一部分。

1.使用純Java從列表中刪除重複項

通過Set可以很容易地使用標準Java Collections Framework從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));

 }

如您所見,原始列表保持不變。

進一步閱讀:

Java Collections面試問題

一組與Collections相關的實用Java面試問題

閱讀更多→

Java –合併多個集合

快速實用的指南,用於在Java中組合多個集合

閱讀更多→

如何使用Java在列表中查找元素

看一下在Java中查找列表中元素的一些快速方法

閱讀更多→

2.使用番石榴從列表中刪除重複項

同樣可以使用番石榴來完成:

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));

 }

同樣,原始列表保持不變。

3.使用Java 8 Lambda從列表中刪除重複項

最後–讓我們看一個使用Java 8中的Lambdas的新解決方案;我們將使用Stream API中的distinct()方法,該方法根據equals()方法返回的結果返回由不同元素組成的流:

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());

 }

有了我們-清除列表中所有重複項的3種快速方法。

4。結論

本文向我們展示瞭如何使用Plain Java,Google Guava和Java 8從列表中刪除重複項是多麼容易。

所有這些示例和代碼片段的實現都可以在GitHub項目中找到。這是一個基於Maven的項目,因此應該易於導入和運行。