首页 > 解决方案 > Groovy:在代码中动态创建嵌套/组合地图

问题描述

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

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。如何将它们添加到人员 地图中,以便它们像上面的示例一样嵌套?

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

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

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

标签: dictionarygroovynestedadd

解决方案


在您的示例中,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]

推荐阅读