有两个不同的地图。一个大于另一个。小地图的键始终是大地图的键的子集。我想获取两个地图都具有的键的值,并使用Groovy功能创建一个列表列表。目的是通过Groovy功能以尽可能少的代码来实现它。
Map big = ['FirstName':'first_name', 'LastName':'last_name', 'FullName':'full_name']
Map small = ['FirstName':'John', 'FullName':'John Williams']
println输出
[[first_name, John], [full_name, John Williams]]
//works even if the small map is not a subset completely
def result = []
big.keySet().intersect(small.keySet()).each {
result << [big[it], small[it]]
}
assert [['first_name', 'John'], ['full_name', 'John Williams']] == result
编辑:在@taiyebur建议的解决方案中添加了两种变体
// VARIATION 2
def result2 = big.subMap(small.keySet()).collect([]) {
[it.value, small.get(it.key)]
}
assert [['first_name', 'John'], ['full_name', 'John Williams']] == result2
// VARIATION 3
def result3 = small.collect([]) {
[big[it.key], it.value]
}
assert [['first_name', 'John'], ['full_name', 'John Williams']] == result3
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句