2个list取交集_角的集合如何取交集

2个list取交集_角的集合如何取交集两个List集合取交集、并集、差集、去重并集的一个简单Demo,可供参考:importjava.util.ArrayList;importjava.util.List;importstaticjava.util.stream.Collectors.toList;publicclassTest{publicstaticvoidmain(String[]args){List<String>list1=newArrayLi

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

两个List集合取交集、并集、差集、去重并集的一个简单Demo,可供参考:

import java.util.ArrayList;
import java.util.List;
import static java.util.stream.Collectors.toList;
 
 
public class Test { 
   
 
    public static void main(String[] args) { 
   
        List<String> list1 = new ArrayList<String>();
        list1.add("1");
		list1.add("2");
		list1.add("3");
		list1.add("5");
		list1.add("6");
 
        List<String> list2 = new ArrayList<String>();
        list2.add("2");
		list2.add("3");
		list2.add("7");
		list2.add("8");
 
        // 交集
        List<String> intersection = list1.stream().filter(item -> list2.contains(item)).collect(toList());
        System.out.println("---交集 intersection---");
        intersection.parallelStream().forEach(System.out :: println);
 
        // 差集 (list1 - list2)
        List<String> reduce1 = list1.stream().filter(item -> !list2.contains(item)).collect(toList());
        System.out.println("---差集 reduce1 (list1 - list2)---");
        reduce1.parallelStream().forEach(System.out :: println);
 
        // 差集 (list2 - list1)
        List<String> reduce2 = list2.stream().filter(item -> !list1.contains(item)).collect(toList());
        System.out.println("---差集 reduce2 (list2 - list1)---");
        reduce2.parallelStream().forEach(System.out :: println);
 
        // 并集
        List<String> listAll = list1.parallelStream().collect(toList());
        List<String> listAll2 = list2.parallelStream().collect(toList());
        listAll.addAll(listAll2);
        System.out.println("---并集 listAll---");
        listAll.parallelStream().forEachOrdered(System.out :: println);
 
        // 去重并集
        List<String> listAllDistinct = listAll.stream().distinct().collect(toList());
        System.out.println("---得到去重并集 listAllDistinct---");
        listAllDistinct.parallelStream().forEachOrdered(System.out :: println);
 
        System.out.println("---原来的List1---");
        list1.parallelStream().forEachOrdered(System.out :: println);
        System.out.println("---原来的List2---");
        list2.parallelStream().forEachOrdered(System.out :: println);
 
    }
}

private static <T> Predicate<T> distinctByKey(Function<? super T, Object> keyExtractor) { 
   
        Map<Object, Boolean> seen = new ConcurrentHashMap<>();
        return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
    }


    public static void main(String[] args) { 
   
        List<String> list=new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);

        List<Integer> list2=new ArrayList<>();
        list.add(1);
        list.add(6);
        list.add(6);
        list.add(7);

        list.addAll(list2);
        list = list.stream().filter(distinctByKey(Integer::intValue)).collect(Collectors.toList());
        System.out.println(list);
    }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/185130.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • stream流带下标foreach循环[通俗易懂]

    stream流带下标foreach循环[通俗易懂]stream流带下标foreach循环

    2022年4月24日
    60
  • Lamp架构_建筑企业架构简介

    Lamp架构_建筑企业架构简介文章目录前言LAMP简介与概述LAMP平台概述构建LAMP平台顺序编译安装的优点各组件的主要作用编译安装Apache编译安装mysql安装PHP前言LAMP简介与概述LAMP平台概述LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整台系统和相关软件,能够提供动态web站点服务及其应用开发环境LAMP是一个缩写词,具体包括Linux操作系统,Apache网站服务器,MySQL数据库服务器,PHP(或perl,Python)网页编程语言构建LAMP平台顺序在构建LAM

    2022年8月31日
    5
  • c语言学生成绩管理系统(超详细从文件中读取数据)

    c语言学生成绩管理系统(超详细从文件中读取数据)历经一个星期的努力打磨出一个较为完整的学生成绩管理系统注意:本文实在文件中直接读取学生的数据而不是手动添加暂时没有增加添加学生的功能后期更新(多添加一个函数的事情)所有源代码在本文的末尾运行环境:windows由于使用了windows的一个库所以在linux下会出错稍微修改一下也是可以运行的效果图先上结果图界面[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来…

    2022年6月20日
    32
  • 查看linux 定时任务的执行记录

    查看linux 定时任务的执行记录1,查看有哪些任务[root@daping-6~]#crontab-lSHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=root#Fordetailsseeman4crontabs#Exampleofjobdefinition:#.—————-minute(0-59)#|.————-hour(0-23)#||.——-.

    2025年7月11日
    2
  • SAP Web IDE环境搭建 – 详细指导

    SAP Web IDE环境搭建 – 详细指导SAPWebIDE介绍在前面我的一些文章中已经有了SAPWebIDE的介绍,还包括了本地的WEBIDE的搭建,以及使用Eclipse作为Fiori开发的平台.不过目前看来,SAP的策略是以云为主,所以将来对于Fiori的开发都会基于SAPWebIDE云端的版本,本文将会详细的介绍如何搭建WebIDE云端版本.什么是SAPWebIDESAPWebIDEisa

    2022年10月17日
    0
  • java软件工程师前景_培养java工程师

    java软件工程师前景_培养java工程师从各大招聘网上我们就能看出,同等软件工程师的就业前景是远比网络工程师就业前景要好很多,年薪在10万以上的软件工程师还只是一个起点,随着经验的增加,年薪超20万的也是很常见的,而其它专业的发展前景是远比不上Java软件工程师的就业前景的。Java软件工程师就业前景为什么这么好呢?原因之一:软件工程师可谓是软件项目开发的掌舵者,一名优秀的软件工程师应当具有较强的逻辑思维能力,对于技术的发展有敏锐的嗅觉…

    2022年9月23日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号