Как получить текущий индекс для каждого Котлина

Как получить индекс для a для каждого цикла... Я хочу печатать числа для каждой второй итерации

Например

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

В java у нас есть традиционная для цикла

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

Как получить i?

Ответы

Ответ 1

В дополнение к решениям, предоставленным @Audi, есть также forEachIndexed:

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

Ответ 2

Использовать indices

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

Если вы хотите значение, а также индекс Use withIndex()

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

Ссылка: Контроль потока в котлин

Ответ 3

Кажется, что вы действительно ищете filterIndexed

Например:

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

Результат:

b
d

Ответ 4

Диапазоны также приводят к считываемому коду в таких ситуациях:

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

Ответ 5

попробуй это; для цикла

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

Ответ 6

Ты можешь использовать:

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