Java中的集合
Java LinkedList指南
Java ArrayList指南
Java中不可變的ArrayList
CopyOnWriteArrayList指南
JavaJava中的多維ArrayList
將迭代器轉換為列表
Java –從列表中獲取隨機項目/元素
用Java對列表進行分區
從Java列表中刪除所有Null
從Java中的列表中刪除所有重複項
檢查Java中兩個列表是否相等
如何使用Java在列表中查找元素
Java列表UnsupportedOperationException
將列表複製到Java中的另一個列表
從列表中刪除所有出現的特定值
將多個元素添加到Java ArrayList
從列表中刪除第一個元素
在Java中迭代列表的方法
Java中兩個列表的交集
如何計算Arraylist中的重複元素
查找Java中兩個列表之間的差異
從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的項目,因此應該易於導入和運行。