Scala:在key上合并两个不可变映射,并获得具有相同类型的新不可变映射

时间:2017-10-09 18:19:27

标签: scala dictionary merge key seq

我想在下面类型的同一个键上合并两个不可变的映射:

scala.collection.immutable.HashMap [字符串,SEQ [字符串]]

和返回类型也应该相同: 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))

注意:返回的地图应该有一个Seq of String作为一个值而不是Seq of Seq的Seq

1 个答案:

答案 0 :(得分:2)

您可以合并两个这样的地图:

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

由于++运算符是不可变的,因此将创建一个新的Map