Kotlinでは、2つのリストを対応する要素ごとに結びつけて、新しいリストを作成できる zip
という便利な関数があります。異なるデータをペアで扱いたいときや、関連する情報をまとめたいときに非常に役立ちます。
zipの基本的な使い方
zip
を使うと、2つのリストを対応する要素ごとに組み合わせ、新しいリストを作成できます。
Kotlin
val names = listOf("田中", "佐藤", "鈴木")
val ages = listOf(25, 30, 35)
val pairedList = names.zip(ages)
println(pairedList)
// 出力: [(田中, 25), (佐藤, 30), (鈴木, 35)]
このように、zip
を使うことで、対応する要素がペアになったリストを作成できます。
zipの活用例
1. リストのデータを組み合わせて分かりやすくする
Kotlin
val products = listOf("りんご", "バナナ", "オレンジ")
val prices = listOf(150, 100, 200)
val productPrices = products.zip(prices) { product, price -> "$product: ${price}円" }
println(productPrices)
// 出力: [りんご: 150円, バナナ: 100円, オレンジ: 200円]
zip
の第二引数にラムダ式を渡すことで、ペアをその場で加工することも可能です。
2. 異なる型のデータを関連付ける
Kotlin
data class Person(val name: String, val age: Int)
val names = listOf("田中", "佐藤", "鈴木")
val ages = listOf(25, 30, 35)
val persons = names.zip(ages) { name, age -> Person(name, age) }
println(persons)
// 出力: [Person(name=田中, age=25), Person(name=佐藤, age=30), Person(name=鈴木, age=35)]
オブジェクトを作成しながらデータを結びつけるのも簡単です。
3. リストの長さが異なる場合の挙動
zip
は、リストの短い方の要素数に合わせて処理される ため、長さが異なるリストを結合すると、余った要素は無視されます。
Kotlin
val listA = listOf(1, 2, 3, 4)
val listB = listOf("A", "B")
val result = listA.zip(listB)
println(result)
// 出力: [(1, A), (2, B)]
この例では、listB
の要素数が listA
より少ないため、(3, 4) のデータは無視されます。
zipを使うメリット
- リスト同士の対応関係を簡単に作成できる
- 異なるデータ型の組み合わせやオブジェクト化も容易
- シンプルなコードでデータを効率的に扱える
データをペアにして処理する場面では、ぜひ zip
を活用してみてください!