欢迎光临
我们一直在努力

java如何取出list里重复的元素

在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可能更好。

赞(0) 打赏
未经允许不得转载:九八云安全 » java如何取出list里重复的元素

评论 抢沙发