Android 如何为每个Kotlin获取当前索引

Android 如何为每个Kotlin获取当前索引,android,for-loop,kotlin,Android,For Loop,Kotlin,如何在for each循环中获取索引?我想为每一次迭代打印数字 比如说 for (value in collection) { if (iteration_no % 2) { //do something } } 在java中,我们有传统的for循环 for (int i = 0; i < collection.length; i++) for(int i=0;i @ KirillRakhman,在这样的情况下使用函数引用首选样式吗?我是Kotlin的新

如何在for each循环中获取索引?我想为每一次迭代打印数字

比如说

for (value in collection) {
    if (iteration_no % 2) {
        //do something
    }
}
在java中,我们有传统的for循环

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

如何获取
i

使用
索引

for (i in array.indices) {
    print(array[i])
}
如果需要值和索引,请使用
withIndex()


参考资料:

除了@Audi提供的解决方案外,还有:


似乎您真正想要的是
filterIndex

例如:

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循环

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

或者,您可以使用库函数:

for ((index, value) in array.withIndex()) {
    println("the element at $index is $value")
}
控制流:如果、何时、针对、同时:

Android中的
forachined
工作示例 使用索引进行迭代

itemList.forEachIndexed{index, item -> 
println("index = $index, item = $item ")
}
itemList.forEachIndexed{ index, item -> item.isSelected= position==index}
使用索引更新列表

itemList.forEachIndexed{index, item -> 
println("index = $index, item = $item ")
}
itemList.forEachIndexed{ index, item -> item.isSelected= position==index}

哇,我觉得这个更好。。。ThanksIt在数组和Iterables上工作,您还需要它做什么?很抱歉将其与原始java数组混淆。是否可以在内部使用
break
?您不能中断整个循环,您可以做的唯一类似的事情是
return@forEachIndexed
基本上作为一个
继续
跳到下一个元素。如果您需要中断,则必须将其封装在一个函数中,并在循环中使用<代码>返回<代码>从该封闭函数返回。还可以考虑使用函数引用<代码> .Frach(::PrtLn)< /Cord> @ KirillRakhman,在这样的情况下使用函数引用首选样式吗?我是Kotlin的新手,所以我仍然在研究这个问题。我倾向于尽可能使用函数引用。当您有多个参数时,与使用lambda相比,您可以保存一组字符。但是这肯定是一个品味的问题。或者
(0..collection.lastIndex step 2)
虽然这段代码可以回答这个问题,但提供关于如何和/或为什么解决问题的附加上下文可以提高答案的长期价值。我如何对此循环设置限制?我认为这个答案更好,因为不需要学习其他东西,只需要简单的for循环+1