Groovy: 在代码中动态创建嵌套/合并地图

Groovy: Dynamically create nested / combine maps in code

我正尝试在代码中动态创建嵌套地图,如下所示。

def people = [
    [name: 'Ash', age: '21', gender: 'm'],
    [name: 'Jo', age: '22', gender: 'f'],
    [name: 'etc.', age: '42', gender: 'f']
]

所以我可以像下面这样搜索它

person = people.findAll {item -> 
         item.gender == 'm' &&
         item.age == '21'}                  

我的问题是,虽然我可以在代码中动态创建一维地图,但我不知道如何在代码中动态组合地图以创建嵌套地图,例如假设我在代码中创建了两个映射 name1name2。如何将它们添加到 people map 以便它们像上面的示例一样嵌套?

def people = [:]
def name1 = [name:'ash', age:'21', gender:'m']
def name2 = [name:'Jo', age:'22', gender:'f']

我搜索/尝试了很多帖子都没有成功。下面很接近,但不起作用:(

people.put((),(name1))
people.put((),(name2))

在您的示例中,people 是地图列表,而不是嵌套地图

所以你可以简单地做:

def people = []
def name1 = [name:'ash', age:'21', gender:'m']
def name2 = [name:'Jo', age:'22', gender:'f']

然后:

people += name1
people += name2

或者在一行中定义:

def people = [name1, name2]