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

Scala如何获取嵌套Seq集合中所有Banner实例的height属性值

解决方法

你原来的代码只输出完整Banner实例是因为println的入参是整个Banner对象,只要修改为访问Banner的height属性即可。根据不同使用场景有两种最优实现:

场景1:仅需打印所有height值

直接修改原有遍历逻辑的打印内容即可,改动最小:

activeCampaigns.foreach(_.banners.foreach(banner => println(banner.height)))

场景2:需要收集所有height值为序列供后续处理

用Scala函数式特性的flatMap+map组合写法最简洁高效,和两层遍历性能一致但可读性更强:

// 直接提取所有height为Seq[Int]类型的集合
val allHeights: Seq[Int] = activeCampaigns.flatMap(_.banners).map(_.height)

// 需要打印时遍历该集合即可
allHeights.foreach(println)

也可以用等价的for推导式写法,逻辑更直观:

val allHeights: Seq[Int] = for {
  campaign <- activeCampaigns
  banner <- campaign.banners
} yield banner.height

实现说明

flatMap会自动把每个Campaign下的banners列表展开,合并为全局的Banner序列,不需要手动处理两层嵌套的遍历逻辑,是Scala处理嵌套集合提取属性的惯用实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 01:15:05