我有一个地图矢量,如下所示,如何将它们转换为一个地图?
scala> (1 to 100).takeWhile(_<10).map{x=>val y=x+1;Map(x->y)}
res8: scala.collection.immutable.IndexedSeq[scala.collection.immutable.Map[Int,Int]] = Vector(Map(1 -> 2), Map(2 -> 3), Map(3 -> 4), Map(4 -> 5), Map(5 -> 6), Map(6 -> 7), Map(7 -> 8), Map(8 -> 9), Map(9 -> 10))
答案 0 :(得分:3)
如果您不需要将每个元素转换为地图,那么元组可以直接转到这样的地图
(1 to 100).takeWhile(_<10).map{x=>val y=x+1;x->y}.toMap
如果您确实需要从地图的Seq出发,如问题所示,则可以使用折叠将地图连接在一起
val v = (1 to 100).takeWhile(_<10).map{x=>val y=x+1;Map(x->y)}
v.fold(Map.empty)((a,b) => a ++ b )
Fold以初始值开始工作,在本例中为Map.empty,然后对该值执行操作,然后保持该op的结果与序列的下一个元素一起使用。然后对序列中的每个元素重复。在我给出的例子中,操作是(a,b)=&gt; a ++ b,其中a作为初始值开始,然后是每次迭代的结果,b是从被折叠的序列中考虑的当前元素。