在此示例中,我们将学习如何用Java删除ArrayList中的重复元素。
要理解此示例,您应该了解以下Java编程主题:
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 中的所有元素添加到 set 集合中
使用 clear() 方法清空 arraylist
再将set 集合中的所有元素添加到 arraylist 中
在这里,我们使用 LinkedHashSet 来创建集合。这是因为它删除重复的元素并保持插入的顺序。要了解更多信息,请访问Java LinkedHashSet。
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 //使用Ararray类的asList()方法 ArrayList<Integer> numbers = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 1, 3)); System.out.println("具有重复元素的ArrayList: " + numbers); //从数组列表创建流 Stream<Integer> stream = numbers.stream(); //调用 Stream 的 distinct () //删除重复的元素 stream = stream.distinct(); //将流转换为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包含重复的元素。
在这里,我们使用Stream类从arraylist中删除重复的元素。
Numbers.stream() - 从arraylist创建一个流
stream.distinct() - 删除重复的元素
stream.collect(Collectors.toList()) - 从流中返回列表
在这里,我们使用类型转换将返回的列表转换为 arraylist。