Scala:合并键上的两个不可变映射并获得具有相同类型的新不可变映射
Scala : Merge two immutable maps on key and get new immutable map with same type
我想在以下类型的相同键上合并两个不可变映射:
scala.collection.immutable.HashMap[字符串,序列[字符串]]
和 return 类型也应该相同:
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))
注意:返回的映射应该有一个字符串序列作为值,而不是字符串序列的序列
您可以像这样合并两个地图:
map2 ++ map3.map{ case (k,v) => k -> (v ++ map2.getOrElse(k,Nil)) }
因为++
运算符是不可变的,所以将创建一个新的Map
。
我想在以下类型的相同键上合并两个不可变映射:
scala.collection.immutable.HashMap[字符串,序列[字符串]]
和 return 类型也应该相同: 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))
注意:返回的映射应该有一个字符串序列作为值,而不是字符串序列的序列
您可以像这样合并两个地图:
map2 ++ map3.map{ case (k,v) => k -> (v ++ map2.getOrElse(k,Nil)) }
因为++
运算符是不可变的,所以将创建一个新的Map
。