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

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

java 复制代码
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 分别是两个列表的长度,适合处理较大的数据集。

相关推荐
像风一样自由20205 分钟前
3.Dockerfile如何构建一个Python算法镜像
开发语言·人工智能·python·大模型
云析赢指标公式网426 分钟前
文华财经指标源码笔记:WINNER筹码函数、控盘变量与MACD变体的调试记录
java·笔记·算法
从琳开始98942 分钟前
从Socket到TCP回显服务器:Java网络编程完整指南
java·服务器·网络·tcp/ip·java-ee
养军博客42 分钟前
Spring Security 4.x / 5.x / 6.x 配置全对比:前后端不分离与前后端分离
java·后端·spring·springsecurity
wifi___43 分钟前
SpringBoot自动装配原理
java·spring boot·后端
SL_staff1 小时前
制造订单交付闭环实践:用跨部门计划模板解决缺料-停机-返工三角死循环
java·开源·产品
device_Any1 小时前
接口文档写着三个字段,接口返回了五个
android·java·linux
Wang's Blog1 小时前
Java 项目实战: 交友项目 - 小视频模块实战:访客记录、FastDFS 存储与 SpringCache 缓存
java·缓存·交友
BuHuaX1 小时前
Lua 与 ToLua:运行机制及热更新原理
开发语言·unity·junit·c#·lua
xys_6781 小时前
深挖C++:C++入门基础
开发语言·c++