2017-03-09 102 views
0

我有一個簡單的問題階轉換表映射

我名單地圖像這樣的

List(
     Map("a" -> "a"), 
     Map("b" -> "b") 
    ) 

而且我想要的結果是這樣

Map(
    "a"->"a", 
    "b"->"b" 
) 

它可以是覆蓋,如果鑰匙是重複 任何人請幫助我

回答

2

你可以結合flattentoMap

val list = List(Map("k1" -> "v1", "k2" -> "v2")) 
list.flatten.toMap // Map(k1 -> v1, k2 -> v2) 

flatten將映射列表轉換成一個元組的列表,然後將toMap你的元組的列表轉換成地圖。

+0

你確定嗎?只要確保至少該鍵在所有映射中都具有相同類型 - 例如,您必須只有Map [String,String]實例。 –

+0

否則確實不會編譯。 –

+0

對不起很適合 – Muhunthan

1

您可以嘗試使用減少:

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) 

這樣,你不需要轉換爲任何中間數據類型。

+0

感謝您的回答 – Muhunthan