配列をmapに変換する
associate
associate
を使うとmapへ変換する方法を柔軟に指定することができます
associateには配列の要素を受け取り、Pair<key, value>を返すラムダ式を与えます
以下は氏名の配列を苗字をキーとするmapへ変換する例です。
val names = listOf("田中 太郎", "山田 花子")
val mapOfFamilyName = names.associate { it.split(" ").let { (familyName, firstName) -> familyName to firstName } }
println(mapOfFamilyName) // {田中=太郎, 山田=花子}
associateBy
associateBy
を使ってもmapへ変換することが可能です。
val names = listOf("田中 太郎", "山田 花子")
val mapOfFamilyName = names.associateBy { it.split(" ")[0] }
println(mapOfFamilyName) // {田中=田中 太郎, 山田=山田 花子}
引数にはmapのキーの生成方法を記述したラムダ式を渡します
key, valueそれぞれを生成するためのラムダ式を与えることもできます
val names = listOf("田中 太郎", "山田 花子")
val mapOfFamilyName = names.associateBy({ it.split(" ")[0] }, { it.split(" ")[1] })
println(mapOfFamilyName) // {田中=太郎, 山田=花子}