從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的項目,因此應該易於導入和運行。
0 條評論,你可以發表評論,我們會進行改進
