Giới thiệu
Bài viết trình bày các cách chuyển List sang Map bằng các hàm thư viện Kotlin.
1. Sử dụng associate()
Cách tiêu chuẩn: associate() nhận list, trả về Map 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)
}
Kết quả
{1=Java, 2=Kotlin, 3=C}
2. Sử dụng associateBy()
associateBy(keySelector, valueTransform) tách rõ key và 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.associateBy(
{ it.priority }, { it.name }
)
println(myMap)
}
Kết quả
{1=Java, 2=Kotlin, 3=C}
3. Sử dụng toMap()
Chuyển list các Pair sang Map bằng map { ... }.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)
}
Kết quả
{1=Java, 2=Kotlin, 3=C}
Ba cách đều tạo Map từ List đối tượng. associateBy rõ ràng nhất khi cần tách key/value selector.