WithIndexメソッド
CoddyのKotlinジャーニー「基礎」セクションの一部。レッスン 75/93。
リストを反復処理するとき、要素だけでなく、その位置も知る必要があることがよくあります。withIndex()メソッドを使うと、両方を一度に取得できます。
任意のリストで withIndex() を呼び出すと、インデックスと値のペアを取得できます。
val colors = listOf("Red", "Green", "Blue")
for ((index, color) in colors.withIndex()) {
println("$index: $color")
}
// 出力:
// 0: Red
// 1: Green
// 2: Blue括弧内の構文に注目してください:(index, color)。これは分割代入と呼ばれ、インデックスと値を個別の変数に展開します。これらの変数には、コードにとって意味のある名前を付けることができます。
この方法は、カウンター変数でインデックスを手動で追跡するよりもすっきりしています。番号付きリストを表示したり、位置に応じて異なる処理を実行したりする必要がある場合に特に便利です:
val tasks = listOf("Wake up", "Exercise", "Eat breakfast")
for ((i, task) in tasks.withIndex()) {
println("Step ${i + 1}: $task")
}
// 出力:
// ステップ 1: 起きる
// ステップ 2: 運動する
// ステップ 3: 朝食を食べるチャレンジ
中級入力として学生の名前のリストを受け取ります。まず学生の人数を読み取り、次に各名前を読み取ります。
withIndex()を使用して、各学生を順位番号(0ではなく1から開始)とともに出力します。
入力形式:
- 1行目: 学生の人数を表す整数
n - 次の
n行: 学生の名前(文字列)
出力形式:
各学生を次の形式で別々の行に出力します:
Rank 1: Alice
Rank 2: Bob
Rank 3: CharliewithIndex()は0から始まるインデックスを返すため、順位番号を1から始めるには調整が必要であることを覚えておいてください。
自分で試してみよう
fun main() {
// 学生の数を読み取る
val n = readLine()!!.toInt()
// 学生の名前をリストに読み込む
val students = mutableListOf<String>()
for (i in 1..n) {
students.add(readLine()!!)
}
// TODO: 以下にコードを書いてください
// withIndex() を使って students を反復処理し、順位を出力する
// 覚えておくこと: withIndex() は 0 から始まるインデックスを与えますが、順位は 1 から始める必要があります
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Kotlinプレイグラウンド