zipを活用してリストを簡単に結びつける

Kotlin
記事内に広告が含まれる場合があります

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を使うメリット

  1. リスト同士の対応関係を簡単に作成できる
  2. 異なるデータ型の組み合わせやオブジェクト化も容易
  3. シンプルなコードでデータを効率的に扱える

データをペアにして処理する場面では、ぜひ zip を活用してみてください!

タイトルとURLをコピーしました