配列を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) // {田中=太郎, 山田=花子}