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

相关推荐
m0_7482489442 分钟前
MySQL如何解决幻读?
java·javascript·mysql
侧耳倾听1113 小时前
多线程-线程本地变量ThreadLocal
java
suxiaoling@3 小时前
C# 使用GDI+设计登录窗体(窗体渐变和关闭淡出)
开发语言·c#
邦之彦3 小时前
C++:四大强制类型转换
开发语言·c++·static_cast·const_cast·dynamic_cast·reinterpretcast
Clank的游戏栈4 小时前
Unity帧同步与状态同步混合架构开发指南
java·unity·架构
天上掉下来个程小白4 小时前
开发环境搭建-01.前端环境搭建
java·spring boot·后端·苍穹外卖
岁岁岁平安4 小时前
SpringMVC学习(初识与复习Web程序的工作流程)(1)
java·spring·servlet·mybatis·springmvc·web
陆鳐LuLu4 小时前
初学者如何用 Python 写第一个爬虫?
开发语言·爬虫·python
兴趣使然的草帽路飞4 小时前
OHara Gateway SPI动态加载机制图解
java·后端·程序员
柿柿快乐4 小时前
C++入门基础
开发语言·c++