在Java中,我们可以使用多种方法来找出List中的重复元素,以下是一些常用的方法:
1、使用HashSet
HashSet是一种不允许重复元素的集合,当我们将List转换为HashSet时,重复的元素将被自动删除,我们可以通过比较原始List和HashSet的大小来找出重复的元素。
import java.util.*; public class Main { public static void main(String[] args) { List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3); Set<Integer> set = new HashSet<>(list); list.removeAll(set); System.out.println("重复的元素有: " + list); } }
2、使用HashMap
HashMap是一种键值对的集合,我们可以将List中的元素作为键,元素出现的次数作为值,我们可以通过遍历HashMap来找出重复的元素。
import java.util.*; public class Main { public static void main(String[] args) { List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3); Map<Integer, Integer> map = new HashMap<>(); for (int num : list) { map.put(num, map.getOrDefault(num, 0) + 1); } System.out.println("重复的元素有: " + map.entrySet().stream() .filter(entry -> entry.getValue() > 1) .map(Map.Entry::getKey) .collect(Collectors.toList())); } }
3、使用Java 8的Stream API
Java 8引入了一种新的编程范式,即函数式编程,我们可以使用Stream API来简化上述操作。
import java.util.*; import java.util.stream.*; public class Main { public static void main(String[] args) { List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3); list.stream() .collect(Collectors.groupingByConcurrent(i -> i)) .entrySet().stream() .filter(entry -> entry.getValue().size() > 1) .map(Map.Entry::getKey) .forEach(System.out::println); } }
以上就是在Java中取出List里重复元素的几种常用方法,每种方法都有其优点和缺点,具体使用哪种方法取决于具体的应用场景,如果List的大小非常大,那么使用HashSet可能会更快,因为它的时间复杂度为O(n);如果需要保留重复元素的位置信息,那么使用HashMap可能更好。
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/241277.html