Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Android

Chuyển đổi List thành Map trong Kotlin

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.