2017-10-09 56 views
0

我想下面的類型相同的密鑰合併兩個不可改變的地圖:斯卡拉:合併對密鑰的兩個不可改變的地圖和獲得新的不可變的映射與同類型

scala.collection.immutable.HashMap [字符串,序列[字符串]

和返回類型也應該是相同的: scala.collection.immutable.HashMap [字符串,SEQ [字符串]]

例如:

scala> map2 
res17: scala.collection.immutable.HashMap[String,Seq[String]] = Map(key1 -> List(value1-2), key2 -> List(value2)) 

scala> map3 
res18: scala.collection.immutable.HashMap[String,Seq[String]] = Map(key1 -> List(value1-3), key3 -> List(value3)) 


merging above two map should be output to: 

Map(key1->List(value1-2,value1-3), key2->List(value2), key3->List(value3)) 

注:返回的映射應該有字符串的序列作爲值不串

的序列的序列
+0

是的,肯定是重複的。關於這個問題的斯卡拉答案甚至更好,因爲它實際上只是'map2 | + | map3' –

回答

2

您可以合併兩個地圖是這樣的:

map2 ++ map3.map{ case (k,v) => k -> (v ++ map2.getOrElse(k,Nil)) } 

因爲++運營商是不可變的,一個新的Map會創建。

+0

感謝R. Fossati提供的幫助..我正在從Java背景轉向Scala並面臨困難時期,因爲Scala具有相當不同的語法和簡潔性...... –