Groovy,如何使用索引迭代列表

Posted

技术标签:

【中文标题】Groovy,如何使用索引迭代列表【英文标题】:Groovy, how to iterate a list with an index 【发布时间】:2012-03-20 08:13:03 【问题描述】:

使用 Groovy 中的所有速记方式,必须有一种更简单的方法来迭代列表,同时访问迭代索引。

for(i in 0 .. list.size()-1) 
   println list.get(i)

基本for 循环中没有隐式索引吗?

for( item in list)
    println item       
    println index

【问题讨论】:

【参考方案1】:

你可以使用eachWithIndex:

list.eachWithIndex  item, index ->
    println item
    println index

对于 Groovy 2.4 和更高版本,您还可以使用 indexed() 方法。这可以很方便地使用 collect 之类的方法访问索引:

def result = list.indexed().collect  index, item ->
    "$index: $item"

println result

【讨论】:

很好的答案,我在哪里可以找到像 eachWithIndex 这样的闭包以及它们采用的参数类型? 我从这里开始:groovy.codehaus.org/GDK+Extensions+to+Object 和 groovy.codehaus.org/JN1015-Collections【参考方案2】:

如果你想开始索引 1,试试这个。

[ 'rohit', 'ravi', 'roshan' ].eachWithIndex  name, index, indexPlusOne = index + 1 ->
    println "Name $name has position $indexPlusOne"

【讨论】:

以上是关于Groovy,如何使用索引迭代列表的主要内容,如果未能解决你的问题,请参考以下文章

如何在Java或Groovy中将列表值动态更改为另一个列表

如何使用 play framework 1.4.2 在模板中迭代地图

如何在 Django 模板中使用变量索引访问列表?

2:如何反序迭代一个序列(字符串,列表,元组)

Groovy集合遍历 ( 使用集合的 reverseEach 方法进行遍历 | 倒序集合迭代器 ReverseListIterator 类简介 | 代码示例 )

使用 foreach 迭代时如何知道行索引?