Java8两个List集合取交集、并集、差集、去重并集

news/2024/12/22 20:00:48/

Stream API:用于对集合元素进行各种操作,如过滤、映射、排序等。
Set:不包含重复元素的集合。
List:有序的元素集合,允许有重复元素。

package com.example.demo;import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;/*** Test 测试** @author Administrator* @version 2024/08/19 13:39**/
public class Test {public static void main(String[] args) {List<String> list1 = Arrays.asList("apple", "banana", "cherry", "date");List<String> list2 = Arrays.asList("banana", "date", "fig", "grape");// 交集List<String> intersection = findIntersection(list1, list2);System.out.println("Intersection: " + intersection);// 并集List<String> union = findUnion(list1, list2);System.out.println("Union: " + union);// 差集 (list1 - list2)List<String> difference = findDifference(list1, list2);System.out.println("Difference (list1 - list2): " + difference);// 去重后的并集List<String> uniqueUnion = findUniqueUnion(list1, list2);System.out.println("Unique Union: " + uniqueUnion);}private static List<String> findIntersection(List<String> list1, List<String> list2) {Set<String> set1 = new HashSet<>(list1);return list2.stream().filter(set1::contains).collect(Collectors.toList());}private static List<String> findUnion(List<String> list1, List<String> list2) {Set<String> set1 = new HashSet<>(list1);set1.addAll(list2);return new ArrayList<>(set1);}private static List<String> findDifference(List<String> list1, List<String> list2) {Set<String> set1 = new HashSet<>(list1);set1.removeAll(new HashSet<>(list2));return new ArrayList<>(set1);}private static List<String> findUniqueUnion(List<String> list1, List<String> list2) {return Stream.concat(list1.stream(), list2.stream()).distinct().collect(Collectors.toList());}
}

交集 (findIntersection): 使用HashSet快速检查元素是否存在于另一个集合中。

并集 (findUnion): 将两个List转换为Set以自动去除重复元素,然后将它们合并。

差集 (findDifference): 从第一个集合中移除第二个集合中的所有元素。

去重后的并集 (findUniqueUnion): 将两个列表合并成一个流,使用distinct()方法去除重复项。


http://www.ppmy.cn/news/1514709.html

相关文章

OCR相关资源整理

一、开源工具 &#xff08;1&#xff09;Umi-OCR GitHub - hiroi-sora/Umi-OCR: OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片&#xff0c;PDF文档识别&#xff0c;排除水印/页眉页脚&#xff0c;扫描/生成二维码。内置多国语言库。

每日OJ_牛客_美国节日(日期模拟)

目录 牛客_美国节日&#xff08;日期模拟&#xff09; 解析代码 牛客_美国节日&#xff08;日期模拟&#xff09; 美国节日__牛客网 解析代码 题目表述很明白&#xff0c;难点在于要求一个月第N个星期W。那么面对这个问题&#xff0c;拆解的思路是&#xff0c;首先&#xff…

第一次项目搭建笔记路由导航守卫web前后端会话跟踪

1.重新搭建后端项目 在IDEA中重新创建一个JavaEE项目,记得勾选Web profile 之后在java文件中重新搭建分级的文件夹 按照标准创建com.xxxx.dorm文件夹并创建dao(数据处理),filter(过滤器),model(模型),util(工具),web(服务端)等文件夹进行不同功能部分的分类 搭建完基本的框架…

【老梁聊IT之java篇】如何优化HashMap的性能,避免内存溢出?

优化HashMap的性能并避免内存溢出是一个涉及多个方面的任务。以下是一些关键的策略和最佳实践&#xff1a; 1. 合理设置初始容量和加载因子 // 根据预期的元素数量设置初始容量和加载因子 int expectedSize 1000; // 预期元素数量 float loadFactor 0.75f; // 根据需要调整…

齐护语音识别V2.1模块可自定义免编程学习唤醒词指令词自带IO实现人机对话 Arduino C编程图形化Mixly Scratch编程

齐护离线语音识别模块可免编程自定义学习唤醒词及识别词 固件V2.1 齐护语音识别V2.1模块可自定义免编程学习唤醒词指令词自带IO实现人机对话 Arduino C编程图形化Mixly Scratch编程 此固件&#xff08;程序/功能&#xff09;为自学习V2.1版本&#xff0c;在基础版本的上去除【变…

Uniapp使用InnerAudioContext返回内部 audio 上下文 ,获取不到duration当前音频的长度,如何解决?

原因:其实是wx的bug,这个问题在开发环境中&#xff0c;并不会遇到。而是真机测试或发版后&#xff0c;就获取不到duration。 解决:我们只要去手动播放音频后&#xff0c;就会抓取到duration。 代码示例 关键代码 this.audioContext.play(); //手动播放音频 完整代码 Audio…

Spring Boot项目中实现文件的上传、下载和预览功能

在Spring Boot项目中实现文件的上传、下载和预览功能&#xff0c;可以通过使用Spring MVC的MultipartFile接口来处理文件上传&#xff0c;并使用HttpServletResponse或Resource来实现文件下载和预览。下面是如何实现这些功能的完整示例。 1. 引入依赖 确保在pom.xml中引入了S…

Oracle RAC vs Clusterware vs ASM

Oracle RAC vs Clusterware vs ASM Oracle RACCache FusionRAC后台进程自动负载管理DBA管理工具Oracle ClusterwareCRS组件HAS组件管理工具Oracle ASMASM实例ASM磁盘组镜像和故障组ASM磁盘ASM文件Oracle RAC RAC即Real Application Clusters,是一种Oracle高可用部署架构。Orac…