web-dev-qa-db-ja.com

Kotlinごとに現在のインデックスを取得する方法

Forループごとのインデックスを取得するにはどうすればよいですか。

例えば

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

Javaでは、伝統的なforループがあります。

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

私を取得する方法?

63
Audi

@Audiが提供する解決策に加えて、 forEachIndexed もあります。

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

indicesを使う

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

インデックスだけでなく値も必要な場合はwithIndex()を使用してください。

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

参考: コトリンの制御フロー

47
Audi

あなたが本当に探しているのはfilterIndexedです。

例えば:

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

結果:

b
d
8
Akavall

これを試して; forループ

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

範囲 は、このような状況でも読みやすいコードになります。

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

あるいは、 withIndex ライブラリ関数を使用することもできます。

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