Kotlinのリストや文字列を扱う場面で、隣り合う要素を比較したい、まとめて処理したいというケースは少なくありません。そんな時に便利なのが、zipWithNext
という関数です。これを使えば、わざわざループでインデックスを管理せずとも、隣接する要素をペアとして扱えます。
基本的な使い方
Kotlin
val numbers = listOf(10, 20, 15, 25)
val pairs = numbers.zipWithNext()
println(pairs)
// 出力: [(10, 20), (20, 15), (15, 25)]
zipWithNext()
を呼び出すだけで、隣接する要素同士のペアを自動的に作ってくれます。- 戻り値は
List<Pair<T, T>>
です。
差分を取りたい時に便利
Kotlin
val numbers = listOf(100, 105, 110, 95)
val differences = numbers.zipWithNext { a, b -> b - a }
println(differences)
// 出力: [5, 5, -15]
zipWithNext
にラムダを渡すと、ペアごとに処理して新しいリストを作れます。- グラフの変化量、数値の変動検出などに非常に便利。
文字列の連続ペア処理
Kotlin
val text = "Kotlin"
val charPairs = text.toList().zipWithNext()
println(charPairs)
// 出力: [(K, o), (o, t), (t, l), (l, i), (i, n)]
- 文字列の隣接文字を調べるのにも応用可能。
- パスワード強度判定など、パターン検出にも使える。
まとめ
zipWithNext
は以下のような場面で活躍します:
- 隣り合うデータの比較処理や変化検出
- 差分や傾向の分析
- 文字列やコレクションのシーケンシャルなペア化
Kotlinでデータの並びや変化を見る処理を書くときは、zipWithNext
を使うとコードがスッキリします。知っておいて損のない、実務でも役立つ関数です。