android - How to get the current index in for each Kotlin


Translate

How do I get the index for a for each loop... I want to print numbers for every second iteration

For example

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

In java we have the traditional for loop

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

How to get the i?


All Answers
  • Translate

    In addition to the solutions provided by @Audi, there's also forEachIndexed:

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

  • Translate

    Use indices

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

    If you want value as well as index Use withIndex()

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

    Reference: Control-flow in kotlin


  • Translate

    It seems that what you are really looking for is filterIndexed

    For example:

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

    Result:

    b
    d
    

  • Translate

    try this; for loop

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

  • Translate

    Ranges also lead to readable code in such situations:

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

  • Translate

    Alternatively, you can use the withIndex library function:

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

  • Translate

    You can use :

    for(i in 0..collection.length) {
         if(collection[i] % 2 == 0) {
             //do something
         }
    }