相关疑难解决方法(0)

合并两个地图并将相同键值相加的最佳方法是什么?

val map1 = Map(1 -> 9 , 2 -> 20)
val map2 = Map(1 -> 100, 3 -> 300)
Run Code Online (Sandbox Code Playgroud)

我想合并它们,并将相同键的值相加.结果将是:

Map(2->20, 1->109, 3->300)
Run Code Online (Sandbox Code Playgroud)

现在我有2个解决方案:

val list = map1.toList ++ map2.toList
val merged = list.groupBy ( _._1) .map { case (k,v) => k -> v.map(_._2).sum }
Run Code Online (Sandbox Code Playgroud)

val merged = (map1 /: map2) { case (map, (k,v)) =>
    map + ( k -> (v + map.getOrElse(k, 0)) )
}
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有更好的解决方案.

merge scala map

169
推荐指数
9
解决办法
8万
查看次数

标签 统计

map ×1

merge ×1

scala ×1