可能重复:
合并两个地图并对相同键的值求和的最佳方法?
我有一堆类型的地图Map[String, Int]
。我希望能够在键对应时将它们合并为值的总和。例如,++
地图上的标准方法给出
Map("a" -> 1, "b" -> 2) ++ Map("a" -> 3, "c" -> 5)
// Map[String,Int] = Map(a -> 3, b -> 2, c -> 5)
我想定义一个结果会给出的操作
Map("a" -> 1, "b" -> 2) ?? Map("a" -> 3, "c" -> 5)
// Map[String,Int] = Map(a -> 4, b -> 2, c -> 5)
在花哨的措辞中,总是有一个自然的幺半群结构,但是当它本身是一个幺半群Map[A, B]
时,有一个不同的结构。B
现在,为 编写一个递归实现并不难LinkedHashMap
,但我认为必须有一些简单且更通用的方法来编写它,可能使用 scalaz。有任何想法吗?