我正在寻找一个如何存储一个键和多个值的示例资格,如下所示:
[name:'Test1',job:'QA',qualifications:['Selenium','Java']]
Map<String,String>=new HashMap<String,String>//not allowing multiple values.
我正在寻找一个如何存储一个键和多个值的示例资格,如下所示:
[name:'Test1',job:'QA',qualifications:['Selenium','Java']]
Map<String,String>=new HashMap<String,String>//not allowing multiple values.
您需要知道,您正在使用包含不同键类型条目的映射。在您的情况下,所有值的最常见键类型是Object,因为name和job键是 type String,qualifications而是 type List<String>。如果要逐步创建这样的映射(通过指定每个键值条目),则需要确保它qualifications是一个列表。您可以通过分配预定义条目列表或分配一个空列表然后使用运算符向其中添加元素来完成此<<操作。考虑以下示例:
def expected = [name:'Test1',job:'QA',qualifications:['Selenium','Java']]
def emp = [:]
emp.name = "Test1"
emp.job = "QA"
emp.qualifications = []
emp.qualifications << "Selenium"
emp.qualifications << "Java"
assert emp == expected
在这个例子中,我们创建了一个空列表,然后我们向其中添加值。或者,我们可以分配一个已经包含这两个值的列表。
def expected = [name:'Test1',job:'QA',qualifications:['Selenium','Java']]
def emp = [:]
emp.name = "Test1"
emp.job = "QA"
emp.qualifications = ["Selenium", "Java"]
assert emp == expected
您在评论中的示例做了一些不同的事情。它没有将元素添加到列表中,而是emp.qualification使用 type 的值覆盖条目String。这就是为什么它只存储一个最后分配的值。