我有以下案例类
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
,要形成三胞胎并获得这个扁平的三胞胎输出
本来我看错了你的问题。你真正想要的可以达到与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] 删除。
我来说两句