Groovy 从两个具有公共键值的映射创建列表列表

Groovy 从两个具有公共键值的映射创建列表列表,groovy,Groovy,有两种不同的地图。一个比另一个大。小地图的关键点总是大地图关键点的子集。我想获取两个映射所共有的键的值,并使用Groovy特性创建一个列表列表。目标是使用Groovy特性尽可能少的代码来实现它 Map big = ['FirstName':'first_name', 'LastName':'last_name', 'FullName':'full_name'] Map small = ['FirstName':'John', 'FullName':'John Williams'] printl

有两种不同的地图。一个比另一个大。小地图的关键点总是大地图关键点的子集。我想获取两个映射所共有的键的值,并使用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]]

谢谢你的解决方案。它给了我更多的想法。使用
collect
这将完成以下工作:
big.keySet().intersect(small.keySet()).collect{[big[It],small[It]}
//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
// 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