我有两张(或更多)这样的地图:
def map = ["John": 34, "Mark":12]
def map2 = ["John": 67, "Foo":123]
无论出于何种原因,我在两个地图上都有重复的键。我想做的是获取具有所有值的另一个映射,但删除重复项(当存在重复的键时,必须采用最大值),输出示例:
map3 = ["John": 67, "Foo":123, "Mark":12]
我的问题是我的代码太复杂了,我认为有一种使用Groovy函数的解决方案。 到目前为止,这是我尝试过的:
def map = ["John": 342, "Mark":12]
def map2 = ["John": 67, "Foo":123]
map.each {k,v ->
if(!map2[k]){
map2.put(k,v)
}else{
if(v > map2[k]){
map2[k] = map[k]
}
}
}
assert map2 == [John:342, Foo:123, Mark:12]
这段代码可以很好地工作,但是我发现它过于复杂,并且要对两个以上的地图执行相同的操作很复杂(我想要一个n个地图的解决方案)。
我的问题: