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

相关推荐
在未来等你4 分钟前
互联网大厂Java求职面试:AI大模型推理服务性能优化与向量数据库分布式检索
java·llm·milvus·向量数据库·rag·spring ai·语义缓存
不爱吃饭爱吃菜8 分钟前
uniapp小程序开发,判断跳转页面是否需要登录方法封装
开发语言·前端·javascript·vue.js·uni-app
代码小将16 分钟前
java方法重写学习笔记
java·笔记·学习
饕餮争锋27 分钟前
单点登陆(SSO)简介-笔记
java·笔记
行星0081 小时前
docker常用命令
java·云原生·eureka
破刺不会编程1 小时前
Linux中基础IO(下)
linux·运维·服务器·开发语言
阮少年、1 小时前
Course 1: Best Practice of RK‘s start Maps SDK for javascript
开发语言·javascript·ecmascript
magic 2452 小时前
实时同步缓存,与阶段性同步缓存——补充理解《补充》
java·redis·mysql
牛马baby2 小时前
Java高频面试之并发编程-23
java·开发语言·面试
hqxstudying2 小时前
Redis击穿,穿透和雪崩详解以及解决方案
java·数据库·redis·缓存