Android 知识

kotlin 内置函数- 关联associate...

2022-05-06  本文已影响0人  zcwfeng

关联 转换允许从集合元素和与其关联的某些值构建 Map。 在不同的关联类型中,元素可以是关联 Map 中的键或值。

val numbers = listOf("one", "two", "three", "three")
println(numbers.associateWith { it.length })

------>result
{one=3, two=3, three=5}

val numbers = listOf("one", "two", "three", "four")

println(numbers.associateBy { it.first().toUpperCase() })
println(numbers.associateBy(keySelector = { it.first().toUpperCase() }, valueTransform = { it.length }))

------>result
{O=one, T=three, F=four}
{O=3, T=5, F=4}

请注意,associate() 会生成临时的 Pair 对象,这可能会影响性能。 因此,当性能不是很关键或比其他选项更可取时,应使用 associate()

data class FullName(val firstName: String, val lastName: String)


    fun parseFullName(fullName: String): FullName {
        val nameParts = fullName.split(" ")
        if (nameParts.size == 2) {
            return FullName(nameParts[0], nameParts[1])
        } else throw Exception("Wrong name format")
    }

    val names = listOf("Alice Adams", "Brian Brown", "Clara Campbell")
    println(names.associate { name -> parseFullName(name).let { it.lastName to it.firstName } })

------> result
{Adams=Alice, Brown=Brian, Campbell=Clara}
同上需要建立转换函数parseFullName 并且定义解构 data

上一篇 下一篇

猜你喜欢

热点阅读