You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Java 11 Stream根据ID匹配过滤Object1列表

Java 11 Stream 实现跨类型ID匹配筛选

优化思路

为避免过滤时重复遍历Object2集合(带来O(n*m)的时间复杂度),先提取所有Object2的ID到哈希集合中,后续存在性判断为O(1)复杂度,整体效率更高。

代码实现

  1. 提取Object2的ID集合
// 假设已存在Object2集合:Set<Object2> object2Set
Set<Integer> targetIds = object2Set.stream()
    .map(Object2::getId)
    .collect(Collectors.toSet());
  1. 过滤Object1列表
// 假设已存在Object1列表:List<Object1> object1List
List<Object1> filteredObjects = object1List.stream()
    .filter(obj1 -> targetIds.contains(obj1.getId()))
    .collect(Collectors.toList());

关键说明

  • 确保Object1和Object2的getId()方法能正确返回int/Integer类型,避免类型不匹配问题。
  • 如果Object2集合为空,过滤结果自然为空列表,符合业务预期。
  • 这种预提取ID的方式在数据量较大时,性能优势会非常明显。

内容的提问来源于stack exchange,提问作者Pratim Singha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 16:37:43