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

如何从A类型对象嵌套列表中提取满足X属性条件的B类型对象

解决方案

核心思路

  • 原有代码输出的是嵌套的B列表,需要先打平嵌套结构,再过滤符合条件的B对象即可得到结果
  • Scala集合提供的flatMap方法可直接将嵌套集合展开为一维集合,适配该场景需求,且得到的B都是原对象,可直接访问其他属性

实现代码

简洁通用写法

val targetBs = L.flatMap(_.b).filter(_.X == 3)

逻辑说明:

  1. flatMap(_.b) 遍历所有A对象,提取每个A内部的B列表,自动拼接为包含所有B对象的一维列表
  2. filter(_.X == 3) 从全量B列表中筛选出X属性等于3的对象,输出结果完全符合预期。

大数据量优化写法

如果数据量较大,可以提前过滤掉完全没有符合条件B的A对象,减少无用计算:

val targetBs = L
  .filter(_.b.exists(_.X == 3))
  .flatMap(_.b.filter(_.X == 3))

验证效果

替换你示例代码中的res赋值语句后,执行println(targetBs)即可得到预期输出:

List(b:3, b:3)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:15:04