Forループごとのインデックスを取得するにはどうすればよいですか。
例えば
for(value in collection) {
if(iteration_no % 2) {
//do something
}
}
Javaでは、伝統的なforループがあります。
for(int i=0; i< collection.length; i++)
私を取得する方法?
@Audiが提供する解決策に加えて、 forEachIndexed
もあります。
collection.forEachIndexed { index, element ->
// ...
}
indices
を使う
for (i in array.indices) {
print(array[i])
}
インデックスだけでなく値も必要な場合は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
これを試して; forループ
for ((i, item) in arrayList.withIndex()) { }
範囲 は、このような状況でも読みやすいコードになります。
(0 until collection.size step 2)
.map(collection::get)
.forEach(::println)
あるいは、 withIndex
ライブラリ関数を使用することもできます。
for ((index, value) in array.withIndex()) {
println("the element at $index is $value")
}