在 Java 中,有多种方法可以实现列表(List)去重。下面我将介绍一些常见的方法,包括使用循环、Set、Stream API 等方法来实现去重,并提供相应的代码示例。假设我们有一个包含重复元素的列表:
List<Integer> listWithDuplicates = Arrays.asList(1, 2, 2, 3, 4, 4, 5);
这是最基本的方法,通过遍历列表并检查重复项来进行去重。
List<Integer> deduplicatedList = new ArrayList<>();
for (Integer num : listWithDuplicates) {
if (!deduplicatedList.contains(num)) {
deduplicatedList.add(num);
}
}
Set 是一种不允许重复元素的集合。我们可以将列表中的元素添加到 Set 中,自动去重。
Set<Integer> deduplicatedSet = new HashSet<>(listWithDuplicates);
List<Integer> deduplicatedList = new ArrayList<>(deduplicatedSet);
Maven 依赖:
<!-- 在 pom.xml 中添加以下依赖 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.4</version>
</dependency>
Gradle 依赖:
// 在 build.gradle 中添加以下依赖
implementation 'org.apache.commons:commons-collections4:4.4'
import org.apache.commons.collections4.CollectionUtils;
List<Integer> deduplicatedList = new ArrayList<>(CollectionUtils.removeAll(listWithDuplicates, Collections.singleton(null)));
Stream API 提供了强大的功能来处理集合数据,包括去重。
List<Integer> deduplicatedList = listWithDuplicates.stream()
.distinct()
.collect(Collectors.toList());
在 Java 8 之前,我们可以使用经典的方式,利用 Map 来去重。
Map<Integer, Integer> map = new HashMap<>();
for (Integer num : listWithDuplicates) {
map.put(num, num);
}
List<Integer> deduplicatedList = new ArrayList<>(map.values());
以上是几种常见的 Java 列表去重方法,每种方法都有自己的优缺点,你可以根据场景和需求选择适合的方法。