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

相关文章:

  • 生命周期总结(uni-app、vue2、vue3生命周期讲解)
  • Linux总结
  • 进程间通信
  • 【单片机】嵌入式系统设计流程
  • 【仿muduo库one thread one loop式并发服务器实现】
  • 美股回测:历史高频分钟数据的分享下载与策略解析20250305
  • 配置hosts
  • 【软考-架构】9.2、摘要-签名-PKI-访问控制-DOS-欺骗技术
  • SQL注入的原理及详细运用
  • Golang依赖注入实战:从容器管理到应用实践
  • 240 Vocabulary Words Kids Need to Know
  • 计算机组成原理:计算机系统层次结构
  • Redis 各数据类型使用场景详解
  • javaSE基础
  • IP-Guard软件设置P2P升级功能
  • 【问题解决】Jenkins使用File的exists()方法判断文件存在,一直提示不存在的问题
  • 视觉Transformer(DETR)
  • Redis面试常见问题——集群方案
  • IntelliJ IDEA 2024.3.4 版本无法正常加载maven项目
  • frps与frpc
  • 美国务卿鲁比奥抵达会场,将参加俄乌会谈
  • 上海虹桥国际咖啡文化节开幕,推出茶咖文化特色街区、宝妈咖啡师培训
  • 中国青年报:为见义勇为者安排补考,体现了教育的本质目标
  • 证监会发布《上市公司募集资金监管规则》,6月15日起施行
  • 秘鲁总理辞职
  • 跨文化戏剧的拓荒者与传承者——洪深与复旦剧社的百年回响