Kotlinには、特定の条件に合致する範囲の要素を取得したりスキップできる関数として、takeWhile
と dropWhile
があります。これらを使うことで、明確な条件ロジックに基づいた柔軟なリスト操作が可能になります。
takeWhileの使い方
Kotlin
val numbers = listOf(1, 2, 3, 6, 4, 5)
val result = numbers.takeWhile { it < 5 }
println(result) // 出力: [1, 2, 3]
takeWhile
は、条件が「true」の間だけ要素を取り続け、最初に「false」になる要素に達した時点で終了します。
dropWhileとの併用
Kotlin
val dropped = numbers.dropWhile { it < 5 }
println(dropped) // 出力: [6, 4, 5]
dropWhile
は、takeWhile
の逆で、条件に「true」となる間の要素を除外し、それ以降のすべての要素を取得します。
実用的な使い方例
1. データの前処理に便利(条件フィルタリング)
Kotlin
val rawScores = listOf(0, 0, 50, 60, 70)
val validScores = rawScores.dropWhile { it == 0 }
println(validScores) // 出力: [50, 60, 70]
最初の0点を無視して、有効なスコアだけを扱いたい場面に最適です。
2. 時系列データの条件抽出
Kotlin
val temps = listOf(12, 14, 18, 20, 30, 15)
val morningTemps = temps.takeWhile { it < 25 }
println(morningTemps) // 出力: [12, 14, 18, 20]
25度を超える前のデータだけ抽出したい時に使えます。
まとめ
関数 | 処理内容 |
---|---|
takeWhile | 条件を満たす間の要素を「先頭から」取得 |
dropWhile | 条件を満たす間の要素を「先頭から」スキップ |
コードを直感的かつシンプルにしたいときには、takeWhile
とdropWhile
は非常に役立ちます。ぜひ現場でも活用してみてください。