【发布时间】:2017-03-09 09:06:11
【问题描述】:
我有一个简单的问题
我有这样的地图列表
List(
Map("a" -> "a"),
Map("b" -> "b")
)
我想要这样的结果
Map(
"a"->"a",
"b"->"b"
)
如果key是重复的,可以覆盖 有谁请帮帮我
【问题讨论】:
标签: scala
我有一个简单的问题
我有这样的地图列表
List(
Map("a" -> "a"),
Map("b" -> "b")
)
我想要这样的结果
Map(
"a"->"a",
"b"->"b"
)
如果key是重复的,可以覆盖 有谁请帮帮我
【问题讨论】:
标签: scala
你可以结合flatten和toMap:
val list = List(Map("k1" -> "v1", "k2" -> "v2"))
list.flatten.toMap // Map(k1 -> v1, k2 -> v2)
flatten 会将映射列表转换为元组列表,然后toMap 会将您的元组列表转换为映射。
【讨论】:
你可以尝试使用reduce:
scala> val list = List(Map("k1" -> "v1", "k2" -> "v2"))
list: List[scala.collection.immutable.Map[String,String]] = List(Map(k1 -> v1, k2 -> v2))
scala> list.reduce(_ ++ _)
res0: scala.collection.immutable.Map[String,String] = Map(k1 -> v1, k2 -> v2)
scala> val list = List(Map("k1" -> "v1"), Map("k2" -> "v2"))
list: List[scala.collection.immutable.Map[String,String]] = List(Map(k1 -> v1), Map(k2 -> v2))
scala> list.reduce(_ ++ _)
res1: scala.collection.immutable.Map[String,String] = Map(k1 -> v1, k2 -> v2)
这样您就不需要转换为任何中间数据类型。
【讨论】: