associate所在位置是kotlin.collections.associate,其相关用法介绍如下。

用法一

inline fun <T, K, V> Array<out T>.associate(
    transform: (T) -> Pair<K, V>
): Map<K, V>
inline fun <K, V> ByteArray.associate(
    transform: (Byte) -> Pair<K, V>
): Map<K, V>
inline fun <K, V> ShortArray.associate(
    transform: (Short) -> Pair<K, V>
): Map<K, V>
inline fun <K, V> IntArray.associate(
    transform: (Int) -> Pair<K, V>
): Map<K, V>
inline fun <K, V> LongArray.associate(
    transform: (Long) -> Pair<K, V>
): Map<K, V>
inline fun <K, V> FloatArray.associate(
    transform: (Float) -> Pair<K, V>
): Map<K, V>
inline fun <K, V> DoubleArray.associate(
    transform: (Double) -> Pair<K, V>
): Map<K, V>
inline fun <K, V> BooleanArray.associate(
    transform: (Boolean) -> Pair<K, V>
): Map<K, V>
inline fun <K, V> CharArray.associate(
    transform: (Char) -> Pair<K, V>
): Map<K, V>

返回一个Map,其中包含由transform 函数提供的键值对,该函数应用于给定数组的元素。

如果两对中的任何一对具有相同的 key ,则最后一个将添加到Map中。

返回的映射保留原始数组的条目迭代顺序。

例子:

import kotlin.test.*

fun main(args: Array<String>) {
//sampleStart
val charCodes = intArrayOf(72, 69, 76, 76, 79)

val byCharCode = charCodes.associate { it to Char(it) }

// 76=L only occurs once because only the last pair with the same key gets added
println(byCharCode) // {72=H, 69=E, 76=L, 79=O}
//sampleEnd
}

输出:

{72=H, 69=E, 76=L, 79=O}

用法二

inline fun <T, K, V> Iterable<T>.associate(
    transform: (T) -> Pair<K, V>
): Map<K, V>

返回一个Map,其中包含由transform 函数提供的键值对,该函数应用于给定集合的元素。

如果两对中的任何一对具有相同的 key ,则最后一个将添加到Map中。

返回的映射保留原始集合的条目迭代顺序。

例子:

import kotlin.test.*

fun main(args: Array<String>) {
//sampleStart
val names = listOf("Grace Hopper", "Jacob Bernoulli", "Johann Bernoulli")

val byLastName = names.associate { it.split(" ").let { (firstName, lastName) -> lastName to firstName } }

// Jacob Bernoulli does not occur in the map because only the last pair with the same key gets added
println(byLastName) // {Hopper=Grace, Bernoulli=Johann}
//sampleEnd
}

输出:

{Hopper=Grace, Bernoulli=Johann}