Groovy映射合并

Groovy映射合并,groovy,Groovy,问题: 如何合并具有相同键集但值不同的两个groovy映射 例如: Map one = [ 'a': ['foot':'ball'], 'b': 'cricket', 'c': 'tennis' ] Map two = ['a': ['basket':'ball']] 我希望输出是: Map three = [ 'a': ['foot':'ball', 'basket': 'bal

问题: 如何合并具有相同键集但值不同的两个groovy映射

例如:

Map one = [ 'a': ['foot':'ball'],
            'b': 'cricket',
            'c': 'tennis'
           ]

Map two = ['a': ['basket':'ball']]
我希望输出是:

Map three = [ 'a': ['foot':'ball', 
                    'basket': 'ball'],
                'b': 'cricket',
                'c': 'tennis'
               ]
因此,如上所述,它需要拾取任何匹配的关键点并合并这些关键点的值,从而生成组合贴图


提前感谢。

可能有一种稍微短一点的方法,但它非常简洁:

   Map three = [:]
   (one.entrySet() + two.entrySet()).each { entry -> 
       three[entry.key] = three.containsKey(entry.key) ? [:] << three[entry.key] << entry.value : entry.value 
   }

   println three

您希望如何处理碰撞,例如,其中一个贴图中的“脚”映射到“手”上?如果脚映射到手,则后者优先。所以地图二优先,这能回答你的问题吗?
[a:[foot:ball, basket:ball], b:cricket, c:tennis]