集合并集交集差集【工具类】

一、使用Stream流进行处理

在Java开发中,对于集合的操作是非常常见的,特别是交集、并集和差集这样的操作。这些操作可以通过Java 8中的Stream API来实现。
•交集:取两个集合中相同的部分。例如,如果我们有两个List集合:list1和list2,我们可以使用list1.stream().filter(list2::contains).collect(Collectors.toList())来获取它们的交集。
•并集:将两个集合合并为一个集合。同样使用Stream API,我们可以使用Stream.concat(list1.stream(), list2.stream()).collect(Collectors.toList())来得到两个集合的并集。此外,还可以通过先将两个集合合并,然后使用distinct()方法去重,最后将结果收集到一个新的集合中来获得并集。
•差集:取两个集合中不相同的部分。例如,使用list1.stream().filter(item -> !list2.contains(item)).collect(toList())可以获取list1相对于list2的差集。同样地,我们也可以获取list2相对于list1的差集。

二、使用commons包处理

推荐使用封装后的工具类进行处理,代码如下所示:

import org.apache.commons.collections.CollectionUtils;
import java.util.List;/*** 集合 并集 交集 差集* @param <T>*/
public class CollectionHigherOrderUtils<T> {/*** 获取两个列表的并集** @param list  第一个列表* @param list2 第二个列表* @return 两个列表的并集,如果任一列表为null,则返回null*/public static <T> List<T> unionList(List<T> list, List<T> list2) {if (list == null || list2 == null) {return null; // 或者你可以返回一个空的列表}return (List<T>) CollectionUtils.union(list, list2);}/*** 获取两个列表的交集** @param list  第一个列表* @param list2 第二个列表* @return 两个列表的交集,如果任一列表为null,则返回null*/public static <T> List<T> intersectionList(List<T> list, List<T> list2) {if (list == null || list2 == null) {return null; // 或者你可以返回一个空的列表}return (List<T>) CollectionUtils.intersection(list, list2);}/*** 获取两个列表的对称差集(即只在一个列表中出现的元素)** @param list  第一个列表* @param list2 第二个列表* @return 两个列表的对称差集,如果任一列表为null,则返回null*/public static <T> List<T> symmetricDifferenceList(List<T> list, List<T> list2) {if (list == null || list2 == null) {return null; // 或者你可以返回一个空的列表}return (List<T>) CollectionUtils.disjunction(list, list2);}/*** 获取第一个列表中存在但第二个列表中不存在的元素(即差集)** @param list  第一个列表* @param list2 第二个列表* @return 第一个列表的差集,如果任一列表为null,则返回null*/public static <T> List<T> subtractList(List<T> list, List<T> list2) {if (list == null || list2 == null) {return null; // 或者你可以返回一个空的列表}return (List<T>) CollectionUtils.subtract(list, list2);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/26633.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【2024最新精简版】Redis面试篇

文章目录 什么是红锁Redis有哪些框架&#xff1f;你们项目中哪里用到了Redis ?Redis的常用数据类型有哪些 ?Redis的数据持久化策略有哪些 ?Redis的数据过期策略有哪些 ?Redis的数据淘汰策略有哪些 ?你们使用Redis是单点还是集群 ? 哪种集群 ?Redis集群有哪些方案, 知道嘛…

iOS--oc对象,类,和元类本质

iOS--oc对象&#xff0c;类&#xff0c;和元类本质 前言实例对象的具体结构自定义类对象的结构继承关系 类信息的存放对isa、superclass总结 前言 最近在学习runtime的过程中&#xff0c;发现其中消息发送-动态方法解析-消息转发中涉及到了大量的类与对象的底层知识&#xff0…

在linux系统上挂载新硬盘

服务器的硬盘空间不够了&#xff0c;自己重新安装了一个硬盘&#xff0c;需要挂载&#xff0c;因为只是用来存放数据&#xff0c;所以不需要分区&#xff0c;直接挂载就可以 #查看当前所有硬盘 sudo fdisk -l #用于显示文件系统的磁盘空间使用情况 df -h发现一个/dev/nvme0n1 …

mysql索引失效的几种情况

1、对列进行计算或者是使用函数&#xff0c;则该列的索引会失效 如&#xff1a;substring(字段名,1,2)‘xxx’&#xff1b; 如&#xff1a;select * from test where id-19;//错误的写法&#xff1b; select * from test where id10; //正确的写法 &#xff1b; 2、某些情况下…

java.nio.charset.UnmappableCharacterException

问题 java.lang.IllegalArgumentException: java.nio.charset.UnmappableCharacterException: Input length 1 解释为编码转换有问题 问题错在位置 非汉字存在 打包的时候就会报异常

TikTok限流封号要如何处理

随着TikTok在全球范围内的运营和管理越来越规范&#xff0c;对于违规行为的处罚也日趋严格。其中&#xff0c;限流和封号是两种常见的处罚措施。那么&#xff0c;当TikTok账号遭遇限流或封号时&#xff0c;我们应该如何处理呢&#xff1f; 一、了解限流和封号的原因 在处理Ti…

Zoom会议网络连接不稳定怎么办?

随着远程办公和在线会议的普及&#xff0c;Zoom已成为许多企业的重要办公工具。然而&#xff0c;国内企业在使用Zoom进行线上会议时&#xff0c;常常面临网络不稳定和中断的问题&#xff0c;这不仅影响会议效率&#xff0c;还可能给企业带来损失。那么&#xff0c;Zoom会议网络…

meilisearch的分页

Elasticsearch 做为老牌搜索引擎&#xff0c;功能基本满足&#xff0c;但复杂&#xff0c;重量级&#xff0c;适合大数据量。 MeiliSearch 设计目标针对数据在 500GB 左右的搜索需求&#xff0c;极快&#xff0c;单文件&#xff0c;超轻量。 所以&#xff0c;对于中小型项目来说…

APP分发平台在推广过程起到什么作用?

APP分发平台在推广过程中起到了至关重要的作用&#xff0c;这些作用主要体现在以下几个方面&#xff1a; 扩大应用覆盖面和市场份额&#xff1a;APP分发平台作为连接开发者和用户的桥梁&#xff0c;通过不同的分发渠道&#xff08;如应用商店、第三方分发平台等&#xff09;&a…

人生感悟 | 我们为什么贫穷?

哈喽&#xff0c;你好啊&#xff0c;我是雷工&#xff01; 我们为什么贫穷&#xff1f; 因为我们都在局中并坦然的按着规则制定者循规蹈矩的生活。 01 负债导致贫穷 最近同事买房&#xff0c;总价一百多万&#xff0c;月供四千多&#xff0c;讲话&#xff1a;已入坑&#xff0…

python如何终止程序运行

方法1&#xff1a;采用sys.exit(0)&#xff0c;正常终止程序&#xff0c;从图中可以看到&#xff0c;程序终止后shell运行不受影响。 方法2&#xff1a;采用os._exit(0)关闭整个shell&#xff0c;从图中看到&#xff0c;调用sys._exit(0)后整个shell都重启了&#xff08;RESTAR…

SSC30KD SigmaStar 摄像头主控芯片

SSC30KD SigmaStar 摄像头主控芯片

opencv_特征检测和描述

理解特征 寻找独特的特定模式或特定特征&#xff0c;可以轻松跟踪和比较。 拼图&#xff1a;在图像中搜索这些特征&#xff0c;找到它们&#xff0c;在其他图像中查找相同的特征并对齐它们。而已。 基本上&#xff0c;角被认为是图像中的好特征。 在本单元中&#xff0c;我…

【python】如何import 另一个路径下的py文件内容

目录结构&#xff1a; ├─common │ └─config.py └─own_module │ └─run.py问题描述&#xff1a; 如何在run.py 中调用 config.py 中的函数或类&#xff1f; 解决办法&#xff1a; import os import sys # 为了引用自定义模块&#xff0c;可临时将module的绝对路径…

Interview preparation--案例加密后数据的模糊查询

加密数据的模糊查询实现方案 我们知道加密后的数据对模糊查询不是很友好&#xff0c;本篇就针对加密数据模糊查询这个问题来展开讲一讲实现的思路&#xff0c;希望对大家有所启发。为了数据安全我们在开发过程中经常会对重要的数据进行加密存储&#xff0c;常见的有&#xff1…

Python学习从0开始——Kaggle计算机视觉001

Python学习从0开始——Kaggle计算机视觉001 一、卷积分类器1.分类器2.训练分类器3.使用 二、卷积和RELU1.特征提取2.带卷积的过滤器定义3.激活&#xff1a;4.用ReLU检测5.使用 三、最大池化1.最大池压缩2.使用3.平移不变性 四、滑动窗口1.介绍2.步长3.边界4.使用 五、自定义Con…

Vue 简单自定义标签

Vue 简单自定义标签 思路&#xff1a; 1、计算每个项离父级左侧宽 left 2、计算当前滑块的宽&#xff0c;绝对定位 3、下一个项的宽/2-滑块的宽/2下一项离父级左侧的宽 left 4、使用定位left&#xff08;性能较差一点&#xff09; 或 translate 移动距离 <template><…

(几何:六边形面积)编写程序,提示用户输入六边形的边长,然后显示它的面积。

(几何:六边形面积)编写程序&#xff0c;提示用户输入六边形的边长&#xff0c;然后显示它的面积。计 算六边形面积的公式是: 这里的s就是边长。下面是一个运行示例 package myjava; import java.math.*; import java.util.Scanner; public class cy {public static void main(S…

【MIT6.S081】准备工作

官方网站&#xff1a; 6.S081 / Fall 2020 相关资源&#xff1a; GitHub - PKUFlyingPig/MIT6.S081-2020fall: MIT undergraduate operating system course 版本控制 6.S081 All-In-One MIT6.S081 | Miigons blog

gridview的模板按钮如何判断用户点击的是哪一行

在asp.net的 GridView 控件中&#xff0c;判断用户点击的是哪一行通常可以通过处理 GridView 的 RowCommand 事件来实现。RowCommand 事件会在 GridView 的每个按钮&#xff08;除非另有指定的CommandName&#xff09;被点击时触发&#xff0c;并且事件参数中包含了足够的信息来…