associateByでリストを簡単にマップへ変換(2)

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

Kotlinには、リストの要素を特定のキーに基づいて マップ(Map) に変換するための associateBy という便利な関数があります。これを使うことで、リストから検索しやすいデータ構造を簡単に作成できます。

associateByの基本的な使い方

1. リストをキー付きのマップに変換

Kotlin
data class User(val id: Int, val name: String)

val users = listOf(
    User(1, "田中"),
    User(2, "佐藤"),
    User(3, "鈴木")
)

val userMap = users.associateBy { it.id }

println(userMap) // 出力: {1=User(id=1, name=田中), 2=User(id=2, name=佐藤), 3=User(id=3, name=鈴木)}

このように、id をキーとして User オブジェクトを Map<Int, User> に変換できます。
ここまでは以前記事にしています。


2. マップの検索が簡単に

Kotlin
val user = userMap[2]

println(user)  // 出力: User(id=2, name=佐藤)

リストの find 関数を使うよりも、マップに変換することで O(1)の高速検索 が可能になります。


3. 値を変換しながらマップ化

Kotlin
val userNamesById = users.associateBy({ it.id }, { it.name })

println(userNamesById) // 出力: {1=田中, 2=佐藤, 3=鈴木}

このように キーと値を別々に指定 することも可能です。


associateByを活用するメリット

  1. リストをキー付きのデータに変換できる
  2. 検索が効率化され、パフォーマンスが向上する
  3. カスタムのキーや値を指定して柔軟なマップ作成が可能

リストをマップに変換してデータを整理したい場合は、ぜひ associateBy を活用してみてください!

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