Ответ 1
В дополнение к решениям, предоставленным @Audi, есть также forEachIndexed
:
collection.forEachIndexed { index, element ->
// ...
}
Как получить индекс для a для каждого цикла... Я хочу печатать числа для каждой второй итерации
Например
for(value in collection) {
if(iteration_no % 2) {
//do something
}
}
В java у нас есть традиционная для цикла
for(int i=0; i< collection.length; i++)
Как получить i?
В дополнение к решениям, предоставленным @Audi, есть также forEachIndexed
:
collection.forEachIndexed { index, element ->
// ...
}
Использовать indices
for (i in array.indices) {
print(array[i])
}
Если вы хотите значение, а также индекс Use withIndex()
for ((index, value) in array.withIndex()) {
println("the element at $index is $value")
}
Ссылка: Контроль потока в котлин
Кажется, что вы действительно ищете filterIndexed
Например:
listOf("a", "b", "c", "d")
.filterIndexed { index, _ -> index % 2 != 0 }
.forEach { println(it) }
Результат:
b
d
Диапазоны также приводят к считываемому коду в таких ситуациях:
(0 until collection.size step 2)
.map(collection::get)
.forEach(::println)
попробуй это; для цикла
for ((i, item) in arrayList.withIndex()) { }
Ты можешь использовать:
for(i in 0..collection.length) {
if(collection[i] % 2 == 0) {
//do something
}
}