groovy:如何比较两个映射的键,并组合输出值

时间:2016-04-08 00:58:07

标签: java groovy hashmap key-value

我试图匹配两个单独地图的键(其中一个有嵌套的值列表),如果键相同,则取每个地图的值并打印出来。

    Map 1 = [1210910348504950525757554952 : 40_b4_f0_a4_9d_80]

    Map 2 = [1210910348504950525757554952:[1, 23230967]

因此,我需要得到一个如下所示的输出:

    Map1Value.Map2(NestedValue1).Map2(NestedValue2)

    40_b4_f0_a4_9d_80.1.23230967

我无法想办法做到这一点。

1 个答案:

答案 0 :(得分:3)

所以,我希望你有一个简单的例子,并且每个地图中不仅仅有一个键。

如果是这种情况,可能会像:

Map map1 = [ 444: 'aaa', 555: 'bbb', 666: 'zzz' ]
Map map2 = [ 444: [ 'cc', 'dd', 'ff' ], 666: ['111', '222'] ]

map1.keySet().each { key ->
    List v2 = map2[key]
    if ( v2 ) {
       println (([map1[key]] + v2).join("."))
    }
}

或者甚至更短的东西:

map1.keySet().intersect( map2.keySet() ).each { key ->
   println (([map1[key]] + map2[key]).join("."))
}

他们都输出:

aaa.cc.dd.ff
zzz.111.222

请注意,第二张地图中的555键不匹配,因此未输出。 注意我只是从map1中创建一个列表,然后将map2中的值列表添加到它中,然后用句点加入它们。