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。