从groovy中的嵌套列表中获取值

时间:2012-06-10 03:31:18

标签: collections groovy

我在这样的groovy中有一个3级嵌套列表

rList = [[[12, name1],[22,name2],[49,name3]],[[33, name5],[22,name6],[21, name7]]]

如何迭代它以从第一个子列表中获取名称值 所以我想要rsublist = [name1, name2, name3]

提前致谢。

2 个答案:

答案 0 :(得分:7)

rList = [[[12, 'name1'], [22, 'name2'], [49, 'name3']], [[33, 'name5'], [22, 'name6'], [21, 'name7']]]
names = rList[0]*.getAt(1)
assert names == ['name1', 'name2', 'name3']

首先,rList[0]为您提供第一个子列表,即[[12, name1], [22, name2], [49, name3]]。然后,spread operator*.用于将相同的方法getAt(1)应用于该列表的每个元素,这将返回包含子列表的每个第二个元素的列表,这是您正在寻找的值:)

您也可以使用等效的rList[0].collect { it[1] },如果您不习惯传播操作员,可能会更熟悉。

答案 1 :(得分:2)

基于@epidemian's answer,这是一个更易阅读的版本:

rList.first()*.last()