web-dev-qa-db-fra.com

Comment obtenir l'indice actuel pour chaque Kotlin

Comment puis-je obtenir l'index pour un pour chaque boucle ... Je veux imprimer des nombres pour chaque seconde itération

Par exemple

for(value in collection) {
     if(iteration_no % 2) {
         //do something
     }
}

En Java nous avons la boucle traditionnelle

for(int i=0; i< collection.length; i++)

Comment obtenir le i?

76
Audi

Outre les solutions fournies par @Audi, il existe aussi forEachIndexed :

collection.forEachIndexed { index, element ->
    // ...
}
184
zsmb13

Utilisez indices

for (i in array.indices) {
    print(array[i])
}

Si vous voulez une valeur et un index Utilisez withIndex()

for ((index, value) in array.withIndex()) {
    println("the element at $index is $value")
}

Référence: flux de contrôle en kotlin

55
Audi

Il semble que ce que vous recherchez réellement est filterIndexed

Par exemple:

listOf("a", "b", "c", "d")
    .filterIndexed { index, _ ->  index % 2 != 0 }
    .forEach { println(it) }

Résultat:

b
d
8
Akavall

essaye ça; pour la boucle

for ((i, item) in arrayList.withIndex()) { }
6
alicanozkara

Les plages conduisent également à un code lisible dans de telles situations:

(0 until collection.size step 2)
    .map(collection::get)
    .forEach(::println)
2
s1m0nw1

Vous pouvez également utiliser la fonction de bibliothèque withIndex :

for ((index, value) in array.withIndex()) {
    println("the element at $index is $value")
}
1
Anoop M