如何在groovy中连接映射列表

如何在groovy中连接映射列表,groovy,Groovy,如果我在groovy中有两个映射列表 def x = [ [a:1, b:2], [a:1, b:3], [a:2, b:4] ] ​def y = ​[ [f:10, b:2, g:7], [f:100, b:3, g:8], [f:20, b:4, g:9] ] 如何基于特定属性将它们连接起来。在上面的示例中,b的值 期望的结果是 [a:1, b:2, f:10, g:7] [a:1, b:3, f:100, g:8] [a:2, b:4, f:20, g:9] 我试过了,但不是我想要的

如果我在groovy中有两个映射列表

def x = [ [a:1, b:2], [a:1, b:3], [a:2, b:4] ]
​def y = ​[ [f:10, b:2, g:7], [f:100, b:3, g:8], [f:20, b:4, g:9] ]
如何基于特定属性将它们连接起来。在上面的示例中,b的值

期望的结果是

[a:1, b:2, f:10, g:7]
[a:1, b:3, f:100, g:8]
[a:2, b:4, f:20, g:9]
我试过了,但不是我想要的

def z = (x + y).groupBy { it.b }
z.each{ k, v -> println "${k}:${v}" }

谢谢

您应该能够通过以下方式获得所需的结果:

println (x + y).groupBy { it.b }.collect{it.value}.collect{item -> def m = [:] ; item.collect{ m +=it}; m }
您可以在线快速试用它

您不能这样做吗:

[x,y].transpose().collect { a, b -> a + b }

Richie的可能复制品,检查解决方案,看看是否有帮助。Richie,看起来你也有相同的想法?但这给出了期望的结果。你查过了吗?