本文方法及代码示例基于Kotlin 2.1.20 Released
associateBy
所在包 kotlin.text.associateBy
,其相关用法介绍如下:
用法一
kotlin
inline fun <K> CharSequence.associateBy(
keySelector: (Char) -> K
): Map<K, Char>
返回一个Map,其中包含给定字符序列中的字符,该字符序列由应用于每个字符的keySelector 函数返回的键索引。
如果任意两个字符具有由keySelector 返回的相同键,则最后一个将添加到Map中。
返回的映射保留原始字符序列的条目迭代顺序。
代码示例:
kotlin
import java.util.Locale
import kotlin.test.*
fun main(args: Array<String>) {
//sampleStart
val string = "bonne journée"
// associate each character by its code
val result = string.associateBy { char -> char.code }
// notice each char code occurs only once
println(result) // {98=b, 111=o, 110=n, 101=e, 32= , 106=j, 117=u, 114=r, 233=é}
//sampleEnd
}
// 输出
{98=b, 111=o, 110=n, 101=e, 32= , 106=j, 117=u, 114=r, 233=é}
用法二
kotlin
inline fun <K, V> CharSequence.associateBy(
keySelector: (Char) -> K,
valueTransform: (Char) -> V
): Map<K, V>
返回一个Map,其中包含由valueTransform 提供的值并由应用于给定字符序列的字符的keySelector 函数索引。
如果任意两个字符具有由keySelector 返回的相同键,则最后一个将添加到Map中。
返回的映射保留原始字符序列的条目迭代顺序。
代码示例:
kotlin
import java.util.Locale
import kotlin.test.*
fun main(args: Array<String>) {
//sampleStart
val string = "bonne journée"
// associate each character by the code of its upper case equivalent and transform the character to upper case
val result = string.associateBy({ char -> char.uppercaseChar().code }, { char -> char.uppercaseChar() })
// notice each char code occurs only once
println(result) // {66=B, 79=O, 78=N, 69=E, 32= , 74=J, 85=U, 82=R, 201=É}
//sampleEnd
}
// 输出
{66=B, 79=O, 78=N, 69=E, 32= , 74=J, 85=U, 82=R, 201=É}