当前位置: 首页 > news >正文

java 查找两个集合的交集部分数据

利用了Java 8的Stream API,代码简洁且效率高

import java.util.stream.Collectors;
import java.util.List;
import java.util.HashSet;
import java.util.Set;

public class ListIntersection {

    public static List<Long> findIntersection(List<Long> list1, List<Long> list2) {
        Set<Long> set2 = new HashSet<>(list2);
        return list1.stream()
                    .filter(set2::contains)
                    .collect(Collectors.toList());
    }

    public static void main(String[] args) {
        List<Long> list1 = List.of(1L, 3L, 5L, 7L, 9L);
        List<Long> list2 = List.of(3L, 6L, 9L, 12L);
        
        List<Long> intersection = findIntersection(list1, list2);
        System.out.println("交集结果: " + intersection);
    }
}

步骤解释:

  1. 转换为集合:将第二个列表 list2 转换为一个 Set,以便快速查找元素是否存在。
  2. 流过滤:使用 stream() 方法将第一个列表转换为一个流,并使用 filter() 方法筛选出在集合中包含的元素。
  3. 收集结果:通过 collect(Collectors.toList()) 将筛选后的流收集到一个新的列表中,即为两个列表的交集。

这种方法的时间复杂度为 O(n + m),其中 n 和 m 分别是两个列表的长度,适合处理较大的数据集。

http://www.dtcms.com/a/52345.html

相关文章:

  • K8s 1.27.1 实战系列(一)准备工作
  • 【零基础到精通Java合集】第二十九集:SQL常用优化手段
  • 双链路提升网络传输的可靠性扩展可用带宽
  • 【Oracle学习笔记】1.数据库组成对象
  • 前端开发10大框架深度解析
  • 前端基础之组件
  • CentOS 7 安装 Redis6.2.6
  • Docker的常用镜像
  • Linxu几种登陆方式介绍
  • 基于SSM+MySQL的二手书籍交易系统
  • 【零基础到精通Java合集】第二十集:Java内存模型-堆、栈、方法区
  • 【AI Guide】AI面试攻略只用看这一篇就够了!力争做全网最全的AI面试攻略——大模型(四十五)模型评估
  • 《数据治理破局:DataWorks中AI驱动流程的自修复之道》
  • Jadx Gui 的详细介绍、安装指南、使用方法及配置说明
  • 力扣 Hot 100 刷题记录 - 搜索二维矩阵 II
  • VisActor/VTable - 自定义图标
  • 【大模型技术】LlamaFactory 的原理解析与应用
  • 专门为高速连续扫描设计的TDI工业相机
  • MATLAB仿真:涡旋光束光强和相位分布同时展示
  • golang深度学习-性能分析
  • Julia安装与Jupyter内核配置
  • 多线程-JUC
  • vue中Axios的封装和API接口的管理(待根据实际项目front进行分析)
  • Leetcode 57: 插入区间
  • 鸿蒙HarmonyOS评论功能小demo
  • 【Docker】容器安全之非root用户运行
  • C++ 中的随机数生成及其应用
  • Dify+DeepSeek | Excel数据一键可视化(创建步骤案例)(echarts助手.yml)(文档表格转图表、根据表格绘制图表、Excel绘制图表)
  • Hive-数据倾斜优化
  • JetBrains学生申请