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を活用するメリット
- リストをキー付きのデータに変換できる
- 検索が効率化され、パフォーマンスが向上する
- カスタムのキーや値を指定して柔軟なマップ作成が可能
リストをマップに変換してデータを整理したい場合は、ぜひ associateBy
を活用してみてください!