重複の可能性:
2つのマップをマージし、同じキーの値を合計する最良の方法は?
タイプのマップがたくさんあります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を使用して、これを書くための簡単でより一般的な方法が必要だと思います。何か案は?