跳到主要内容

Java程序从ArrayList中移除重复元素

要理解这个示例,你应该具备以下 Java 编程主题的知识:

示例 1:使用 Set 从 ArrayList 中移除重复元素

import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashSet;
import java.util.Set;

class Main {
public static void main(String[] args) {

// 从数组创建一个 arraylist
// 使用 Arrays 类的 asList() 方法
ArrayList<Integer> numbers = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 1, 3));
System.out.println("包含重复元素的 ArrayList: " + numbers);

// 将 arraylist 转换为 set
Set<Integer> set = new LinkedHashSet<>();
set.addAll(numbers);

// 清空 arraylist 的所有元素
numbers.clear();

// 将 set 中的元素添加到 arraylist
numbers.addAll(set);
System.out.println("无重复元素的 ArrayList: " + numbers);
}
}

输出

包含重复元素的 ArrayList: [1, 2, 3, 4, 1, 3]
无重复元素的 ArrayList: [1, 2, 3, 4]

在上面的示例中,我们创建了一个名为 numbers 的 arraylist。这个 arraylist 包含重复元素。

为了从 arraylist 中移除重复元素,我们已经:

  • 将 arraylist 的所有元素添加到 set 中
  • 使用 clear() 方法清空 arraylist
  • 将 set 中的所有元素添加回 arraylist

这里,我们使用了 LinkedHashSet 来创建 set。这是因为它可以移除重复元素并保持插入顺序。要了解更多,请访问 Java LinkedHashSet

示例 2:使用 Stream 从 ArrayList 中移除重复元素

import java.util.ArrayList;
import java.util.Arrays;
import java.util.stream.Collectors;
import java.util.stream.Stream;

class Main {
public static void main(String[] args) {

// 从数组创建一个 arraylist
// 使用 Arrays 类的 asList() 方法
ArrayList<Integer> numbers = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 1, 3));
System.out.println("包含重复元素的 ArrayList: " + numbers);

// 从 arraylist 创建一个 stream
Stream<Integer> stream = numbers.stream();

// 调用 Stream 的 distinct() 方法
// 移除重复元素
stream = stream.distinct();

// 将 stream 转换为 arraylist
numbers = (ArrayList<Integer>)stream.collect(Collectors.toList());
System.out.println("无重复元素的 ArrayList: " + numbers);

}
}

输出

包含重复元素的 ArrayList: [1, 2, 3, 4, 1, 3]
无重复元素的 ArrayList: [1, 2, 3, 4]

在上面的示例中,我们创建了一个名为 numbers 的 arraylist。这个 arraylist 包含重复元素。

在这里,我们使用了 Stream 类来从 arraylist 中移除重复元素。

  • numbers.stream() - 从 arraylist 创建一个 stream
  • stream.distinct() - 移除重复元素
  • stream.collect(Collectors.toList()) - 从 stream 返回一个 list

这里,我们使用了类型转换将返回的 list 转换为 arraylist。