Add two maps in Groovy while summing up values for common keys
dictionary, groovy
Solution
Yet another solution would be:
def m1 = [ a:1, b:2 ]
def m2 = [ b:1, c:3 ]
def newMap = [m1,m2]*.keySet().flatten().unique().collectEntries {
[ (it): [m1,m2]*.get( it ).findAll().sum() ]
}
Taking epidemian's answer as inspiriation, you can also write a method to handle multiple maps
def m1 = [a: 1, b: 2]
def m2 = [b: 1, c: 3]
def combine( Map... m ) {
m.collectMany { it.entrySet() }.inject( [:] ) { result, e ->
result << [ (e.key):e.value + ( result[ e.key ] ?: 0 ) ]
}
}
def newMap = combine( m1, m2 )
Problem
I have two maps in Groovy `[a: 1, b: 2]` and `[b:1, c:3]` and would like to create from them a third map `[a: 1, b: 3, c: 3]`. Is there a Groovy command that does that? Edit: Notice that the values in the third map, are a sum of the values from the first two maps, if the keys are identical. Thanks