Kotlin associateBy用法及代码示例

本文方法及代码示例基于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=É}

相关方法

相关推荐
ClassOps33 分钟前
腾讯CODING Maven的aar制品添加上传流程
android·java·maven
ClassOps37 分钟前
基于腾讯CODING Maven的Android库发布
android·java·maven
路上^_^2 小时前
安卓基础组件024-底部导航栏
android
加菲猫8602 小时前
文件上传简单的绕过总结
android
一直向钱5 小时前
android 自定义Dialog多种方式
android
sun0077005 小时前
OverlayManager service, overlay, idmap, rro, android
android
_Sem6 小时前
Compose 动画 + KMM 跨平台开发:从传统View到现代声明式UI动画
android·composer
2501_916007477 小时前
前端开发工具都有哪些?常用前端开发工具清单与场景化推荐
android·ios·小程序·https·uni-app·iphone·webview
2501_9159090610 小时前
iOS 应用上架全流程解析,苹果应用发布步骤、ipa 上传工具、TestFlight 测试与 App Store 审核经验
android·macos·ios·小程序·uni-app·cocoa·iphone
路上^_^10 小时前
安卓基础组件024-fagment
android