Kotlinのzipで2つのコレクションを結合する方法【初心者向け完全解説】
生徒
「Kotlinで2つのリストを1つにまとめたいんですが、どうすればいいですか?」
先生
「そんなときはzipという関数を使うと便利です。2つのコレクションを順番にペアとして結合できますよ。」
生徒
「ペアとして結合ってどういうことですか?」
先生
「例えば、商品名のリストと価格のリストを、1つのリストにまとめて管理することができます。実際の例で説明しますね。」
1. zipとは?その基本と仕組みをわかりやすく解説
zip(ジップ)は、2つの独立したリストを「ファスナーを閉めるように」ガッチャンコと1つにまとめる便利な関数です。プログラミングでは、関連する2つのデータをセットで扱いたい場面がよくあります。
例えば、「生徒の名前リスト」と「その年齢のリスト」が別々にある場合、これらを1人ずつのペア(Pair)として結合し、管理しやすくするのがzipの役割です。
まずは、最もシンプルな「名前」と「年齢」を組み合わせるコードを見てみましょう。初心者の方でも、どのような結果になるかイメージしやすいはずです。
fun main() {
// 1つ目のリスト(名前)
val names = listOf("Alice", "Bob", "Charlie")
// 2つ目のリスト(年齢)
val ages = listOf(25, 30, 28)
// zipを使って2つのリストをペアにする
val paired = names.zip(ages)
// 結果を表示
println(paired)
}
[(Alice, 25), (Bob, 30), (Charlie, 28)]
実行結果を見ると、(名前, 年齢)という形式のデータが3つ並んだ新しいリストが作られているのがわかります。このように、同じ位置(インデックス)にある要素同士を自動的に見つけ出してペアにしてくれるのが、zipの最大の特徴です。自分で1つずつ組み合わせる手間が省けるため、コードが非常にスッキリします。
2. リストの長さが違う場合の挙動(zip関数の注意点)
「2つのリストを結合したいけれど、中身の数がバラバラだったらどうなるの?」と不安に思うかもしれません。Kotlinのzip関数は、そんな時でもエラーを出さずに「短い方のリスト」に合わせて自動的に調整してくれます。
例えば、商品リストが3つあるのに、価格リストが2つしかない場合を考えてみましょう。この場合、ペアが作れない余ったデータは切り捨てられる仕組みになっています。
fun main() {
// 3つのフルーツがあるリスト
val fruits = listOf("Apple", "Banana", "Cherry")
// 価格は2つしかないリスト
val prices = listOf(100, 200)
// zipで結合すると、数の少ない「価格」に合わせてペアが作られる
val paired = fruits.zip(prices)
println(paired)
}
[(Apple, 100), (Banana, 200)]
実行結果を見るとわかる通り、3つ目の「Cherry」は対応する価格データが存在しないため、結合結果には含まれません。
このように、zip関数は「必ずペアが成立するものだけを残す」という性質を持っています。プログラミング未経験の方でも、この「短い方に合わせる」というルールさえ覚えておけば、データの個数が一致しないことによる予期せぬエラー(クラッシュ)を防ぐことができるので安心です。
3. zipとラムダ式で加工
zipは、単にペアを作るだけでなく、ラムダ式を使って結合結果を加工することもできます。
fun main() {
val products = listOf("Laptop", "Mouse", "Keyboard")
val prices = listOf(120000, 2000, 5000)
val productInfo = products.zip(prices) { product, price ->
"$product の価格は ${price}円"
}
println(productInfo)
}
[Laptop の価格は 120000円, Mouse の価格は 2000円, Keyboard の価格は 5000円]
このようにして、すぐに使える文章リストを作ることも可能です。
4. zipの実用例:学生の名前と点数を結合
テストの結果を管理する場合、名前のリストと点数のリストを結合して使いやすくできます。
fun main() {
val students = listOf("山田", "佐藤", "鈴木")
val scores = listOf(85, 92, 78)
val results = students.zip(scores) { name, score ->
"$name さんの点数は $score 点です"
}
println(results)
}
[山田 さんの点数は 85 点です, 佐藤 さんの点数は 92 点です, 鈴木 さんの点数は 78 点です]
このように、ペアをわかりやすい文章に変換することができます。
Kotlinを基礎からしっかり学びたい人や、 Java経験を活かしてモダンな言語にステップアップしたい人には、 定番の入門書がこちらです。
基礎からわかるKotlinをAmazonで見る※ Amazon広告リンク
5. zipを使うときの注意点
- 2つのコレクションの長さが異なる場合、短い方に合わせられる
- 結果は
List<Pair<T, R>>になる - ラムダ式を使えばカスタム形式で結合できる
このルールを理解しておけば、zipはデータのペアリングに非常に役立ちます。
【未経験OK】Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験する60分
「プログラミングを始めたい」を形にする。最新言語Kotlinで楽しむ、ものづくりの第一歩。
本講座は、プログラミング経験が全くない方のためのエントリー講座です。「コードを書くってどういうこと?」という基本から、世界中で使われている最新言語Kotlin(コトリン)を使って、実際にプログラムを動かすまでを体験します。難しい理屈よりも、まずは「自分の手で動かす楽しさ」を最短距離で実感していただきます。
具体的な体験内容と環境
【つくるもの】
簡単な言葉を入力すると自動で返答してくれる「対話型ミニプログラム」や、計算を自動化する「便利ツール」をゼロから作成します。黒い画面に自分の書いた文字が表示される瞬間は、最高の感動体験です。
【開発環境】
プロのエンジニアが実際に使っている開発ツールIntelliJ IDEA(インテリジェイ)をインストールします。ボタン一つで日本語化し、初心者でも迷わず操作できる「魔法の設定」を一緒に行います。
この60分で得られる3つの体験
プロと同じ道具を揃えることで、明日から一人でもプログラミングを続けられる環境が整います。
「変数」や「型」といった難しい言葉も、身近な例え話で解説。モヤモヤをゼロにします。
Kotlinは英語に近くて読みやすいのが特徴。自分でコードを読んで、間違いを見つけるコツも伝授します。
※本講座は、パソコン操作が不安な方でも安心して受講いただける完全マンツーマンです。あなたのペースに合わせて、一つずつ丁寧に進めていきます。
Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験