web-dev-qa-db-fra.com

Groovy, comment itérer une liste avec un index

Avec toutes les façons raccourcies de faire les choses dans Groovy, il doit y avoir un moyen plus facile d'itérer une liste tout en ayant accès à un index d'itération.

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

N'y a-t-il pas d'index implicite dans une boucle for de base?

for( item in list){
    println item       
    println index
}
36
raffian

Vous pouvez utiliser eachWithIndex :

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

Avec Groovy 2.4 et plus récent, vous pouvez également utiliser la méthode indexed() . Cela peut être pratique pour accéder à l'index avec des méthodes comme collect:

def result = list.indexed().collect { index, item ->
    "$index: $item"
}
println result
94
ataylor

Essayez ceci si vous souhaitez démarrer l'index 1.

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