KotlinでListをMapに変換する方法まとめ|associate・associateBy・toMapの使い方
この記事では、Kotlin標準ライブラリが提供するさまざまな関数を使って、List(リスト)をMap(マップ)に変換する方法を解説します。主な方法として associate()、associateBy()、toMap() の3つを取り上げ、それぞれのコード例と実行結果を紹介します。
方法1:associate() を使う
リストをマップに変換する最も標準的な方法は、associate() 関数を使うことです。この関数はリストの各要素を受け取り、キーと値のペア(key-valueペア)からなるマップを返します。要素ごとに「何をキーにし、何を値にするか」を自由に指定できるのが特徴です。
次の例では、科目名と優先度を持つデータクラスのリストを、優先度をキーとするマップに変換しています。
コード例
data class mySubjectList(var name: String, var priority: String)
fun main() {
val mySubjectList: List<mySubjectList> = listOf(
mySubjectList("Java", "1"),
mySubjectList("Kotlin", "2"),
mySubjectList("C", "3")
)
// マップを作成し、独自のリストの値を追加する
val myMap: Map<String, String> = mySubjectList.associate {
Pair(it.priority, it.name)
}
println(myMap)
}
実行結果
上記のコードを実行すると、次のようなキーと値の形式で出力されるマップが生成されます。
{1=Java, 2=Kotlin, 3=C}
方法2:associateBy() を使う
associateBy() は、リストをマップへ変換するために使えるもう一つの関数です。associate() との違いは、キーと値をそれぞれ別のラムダ式で指定できる点です。コードの意図がより明確になり、可読性が向上します。
コード例
data class mySubjectList(var name: String, var priority: String)
fun main() {
val mySubjectList: List<mySubjectList> = listOf(
mySubjectList("Java", "1"),
mySubjectList("Kotlin", "2"),
mySubjectList("C", "3")
)
// マップを作成し、独自のリストの値を追加する
val myMap: Map<String, String> = mySubjectList.associateBy(
{ it.priority }, { it.name }
)
println(myMap)
}
実行結果
実行すると、次のようにキーと値の形式で出力されます。
{1=Java, 2=Kotlin, 3=C}
方法3:toMap() を使う
Kotlinライブラリには、リストをマップに変換するためのもう一つの関数が用意されています。KotlinのMapクラスには toMap() という関数があり、指定したコレクション内のすべてのキーと値のペアを含む新しいマップを返します。この方法では、まず map { } で各要素を Pair(to 中置関数)に変換してから、toMap() を呼び出すのが一般的な流れです。
コード例
data class mySubjectList(var name: String, var priority: String)
fun main() {
val mySubjectList: List<mySubjectList> = listOf(
mySubjectList("Java", "1"),
mySubjectList("Kotlin", "2"),
mySubjectList("C", "3")
)
// マップを作成し、独自のリストの値を追加する
val myMap: Map<String, String> = mySubjectList.map {
it.priority to it.name
}.toMap()
println(myMap)
}
実行結果
上記のコードを実行すると、次のようなキーと値の形式で出力されるマップが生成されます。
{1=Java, 2=Kotlin, 3=C}
まとめ:どの関数を使うべきか?
- associate():各要素からキーと値のペアを一度に作りたい場合に便利です。
- associateBy():キーと値を別々に指定したい場合や、キーだけを抽出して要素自体を値にしたい場合に適しています。
- toMap():
map { }で作成したPairのリストをマップ化したい場合に使用します。
なお、これらの関数はすべて読み取り専用の Map を返す点に注意してください。ミュータブルなマップが必要な場合は、結果を toMutableMap() で変換するか、associateTo() / associateByTo() を使って既存の MutableMap に追記する方法もあります。用途に応じて使い分けることで、より簡潔で安全なKotlinコードを書くことができます。
-
JavaScriptで辞書(連想配列)をオブジェクトのリストに変換する方法
JavaScriptでは、キーと値のペアを持つ「辞書」のようなオブジェクトを、Object.values()メソッドを使うことで簡単にオブジェクトの配列(リスト)へ変換できます。以下に具体的なサンプルコードを示します。 サンプルコード <!DOCTYPE html> <html lang=ja> <head> <meta charset=UTF-8 /> <meta name=viewport content=width=device-width, initial-scale=1.0 /> <title>Document&
-
Excelでテーブルをリストに変換する3つの簡単な方法【初心者向け完全ガイド】
Excelでクロス集計形式のデータテーブル(行見出し・列見出し付き)を扱っていると、それを縦持ちのリスト形式に変換したい場面がよくあります。本記事では、ピボットテーブルウィザード、Power Query、VBAの3つの方法を使って、テーブルを簡単かつ迅速にリストへ変換する手順を詳しく解説します。 練習用ファイルのダウンロード 無料のExcelテンプレートをダウンロードして、実際に手を動かしながら練習することができます。 Excelでテーブルをリストに変換する3つの方法 方法1:ピボットテーブルおよびピボットグラフウィザードを使って変換する まずはサンプルデータをご紹介します。ここでは、3