可能重复:
Best way to merge two maps and sum the values of same key?使用Scala的地图累积值
我有一大堆的类型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
本身就是一个monoid的时候有一个不同的。
现在,编写LinkedHashMap
的递归实现并不困难,但我认为必须有一些简单和更通用的方式来编写它,可能使用scalaz。有任何想法吗?
有很多方法可以用Scalaz做到这一点,但是真的很遗憾我们不在集合API的'Map'上有'unionWith'方法。 –