groovy:如何比较两个map的key,并合并values输出
groovy: how to compare keys of two maps, and combine values for output
我正在尝试匹配两个单独映射(其中一个具有嵌套的值列表)的键,如果键相同,则获取每个映射的值并将它们打印出来。
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
我想不出办法来做到这一点。
所以,我希望你只是举一个简单的例子,而且在每张地图中实际上不仅仅是一个键。
如果是这样的话,可能是这样的:
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 的值列表添加到它,然后用句点连接它们。
我正在尝试匹配两个单独映射(其中一个具有嵌套的值列表)的键,如果键相同,则获取每个映射的值并将它们打印出来。
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
我想不出办法来做到这一点。
所以,我希望你只是举一个简单的例子,而且在每张地图中实际上不仅仅是一个键。
如果是这样的话,可能是这样的:
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 的值列表添加到它,然后用句点连接它们。