Java合并两个List并去掉重复项

今天在工作中遇到了需要将两个List<String>合并成一个,并去重的功能点。这种需求点很少,但是还真会出现。

下面给大家展示下我是怎么实现的

方法一:使用HashSet

java 复制代码
    public static void main(String[] args) {
//        String[] arr1 = {"str3", "str1", "str2"};
//        List<String> list1 = new ArrayList<>(Arrays.asList(arr1));
        List<String> list1 = new ArrayList<>();
        list1.add("str3");
        list1.add("str1");
        list1.add("str2");

        List<String> list2 = new ArrayList<>();
        list2.add("str3");
        list2.add("str2");
        list2.add("str4");

        Set<String> set = new HashSet<>(list1);
        set.addAll(list2);
        List<String> list = new ArrayList<>(set);
        System.out.println(list);
}
// 输出结果为:
// [str3, str4, str1, str2]

可以看出,使用HashSet是不排序的,顺序可能会乱

方法二:使用Stream进行去重,但是仅支持JDK1.8及以上

java 复制代码
    public static void main(String[] args) {
//        String[] arr1 = {"str3", "str1", "str2"};
//        List<String> list1 = new ArrayList<>(Arrays.asList(arr1));
        List<String> list1 = new ArrayList<>();
        list1.add("str3");
        list1.add("str1");
        list1.add("str2");

        List<String> list2 = new ArrayList<>();
        list2.add("str3");
        list2.add("str2");
        list2.add("str4");
        
        List<String> collect = Stream.of(list1, list2)
                .flatMap(Collection::stream)
                .distinct()
                .collect(Collectors.toList());
        System.out.println(collect);
    }

// 输出
// [str3, str1, str2, str4]

比较小众的写法,但是真的好用,而且看起来更简洁

相关推荐
快来卷java1 小时前
JVM虚拟机篇(五):深入理解Java类加载器与类加载机制
java·jvm·mysql
禾小西3 小时前
Java 逐梦力扣之旅_[204. 计数质数]
java·算法·leetcode
ゞ 正在缓冲99%…3 小时前
leetcode295.数据流的中位数
java·数据结构·算法·leetcode·
xy_optics4 小时前
用matlab探索卷积神经网络(Convolutional Neural Networks)-3
开发语言·matlab·cnn
有梦想的攻城狮4 小时前
spring-cloud-alibaba-nacos-config使用说明
java·spring·nacos·springcloud·配置中心
独好紫罗兰4 小时前
洛谷题单3-P1720 月落乌啼算钱(斐波那契数列)-python-流程图重构
开发语言·算法·leetcode
慕容莞青6 小时前
MATLAB语言的进程管理
开发语言·后端·golang
Yan-英杰6 小时前
【百日精通JAVA | SQL篇 | 第三篇】 MYSQL增删改查
java·数据库·sql
jimin_callon6 小时前
VBA第三十八期 VBA自贡分把表格图表生成PPT
开发语言·python·powerpoint·编程·vba·deepseek
矛取矛求7 小时前
C++ 标准库参考手册深度解析
java·开发语言·c++