首页 文章

Scala:在键上合并两个不可变映射并获取具有相同类型的新不可变映射[重复]

提问于
浏览
0

这个问题在这里已有答案:

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

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

和return类型也应该相同:scala.collection.immutable.HashMap [String,Seq [String]]

例如:

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))

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

1 回答

  • 2

    你可以像这样合并两个 Map :

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

    因为 ++ 运算符是不可变的,所以将创建一个新的 Map .

相关问题