Ответ Анджей Дойла содержит большое объяснение полугрупп, которое позволяет вам использовать оператор |+|
для объединения двух карт и суммировать значения для совпадающих ключей.
Существует много способов определить что-то быть экземпляром typeclass, и в отличие от OP вы можете не захотеть точно суммировать свои ключи. Или, возможно, вы захотите работать на объединении, а не на перекрестке. Scalaz также добавляет дополнительные функции для Map
для этой цели:
Вы можете сделать
import scalaz.Scalaz._
map1 |+| map2 // As per other answers
map1.intersectWith(map2)(_ + _) // Do things other than sum the values
Возможно, существует более эффективное решение, но вы можете переопределить маршаллер по умолчанию тем, который исключает ненужные поля, но сохраняет все остальные.