Scala,zip中的嵌套序列迭代

好奇的工程师

我有以下案例类

case class Outer(outerId: Integer, outerName: String, innerSeq:Seq[Inner]) 
case class Inner(innerName:String, innerAge: Integer, innerId: Integer)

我创建了以下实例

val innerSeq1 = Seq(Inner("in10",10, 0),Inner("in11",11, 1), Inner("in12",12, 2))
val innerSeq2 = Seq(Inner("in20",10, 0),Inner("in21",11, 1), Inner("in22",12, 2))
val outerSeq = Seq(Outer(1, "out1", innerSeq1), Outer(2, "out2", innerSeq2 ))

我的意图是像这样创建3个元素的三元组,我不确定是否可以使用Zip或如何优雅地做到这一点(我知道地图然后地图可以进行迭代,但是我不清楚如何获得下面的输出)

我想要以下格式的三元组 (name of outer, name of inner, id of inner) Seq( (out1, in10, 0), (out1, in11, 1), (out1, in12, 2), (out2, in20, 0), (out2, in21, 1), (out2, in22, 2) ) 基本上我想在迭代时outersequence,要形成三胞胎并获得这个扁平的三胞胎输出

SergGr

本来我看错了你的问题。你真正想要的可以达到与flatMap和内部map是这样的:

outerSeq.flatMap(o => o.innerSeq.map(i => (o.outerName, i.innerName, i.innerId)))

如果您更喜欢理解,可能会更容易:

val res = for (o <- outerSeq;
               i <- o.innerSeq)
    yield (o.outerName, i.innerName, i.innerId)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章