6

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

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

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

提前致谢。

4

2 回答 2

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]]. 然后,展开运算符, *., 用于将相同的方法 , 应用于getAt(1)该列表的每个元素,这将返回一个包含子列表的每个第二个元素的列表,这些元素是您要查找的值 :)

rList[0].collect { it[1] }如果您不习惯扩展运算符,您也可以使用which 等价的并且可能更熟悉。

于 2012-06-10T03:46:16.627 回答
2

根据@epidemian 的回答,这里有一个更易读的版本:

rList.first()*.last()
于 2012-06-10T15:48:37.163 回答