如何在Kotlin的groupBy结果中根据指定键获取对应值?
获取Kotlin GroupBy结果中指定键对应的值
嗨,这完全不是什么值得不好意思的基础问题哦——刚接触Kotlin和面向对象编程时,对集合的操作逻辑不熟悉太正常啦😉
你用groupBy得到的byLength其实是一个**Map<Int, List<String>>**类型的对象,所以要获取指定键对应的值,直接用Map的常用方法就可以啦,给你几种实用的方式:
1. 直接使用方括号[]操作符
这是最直观的方式,就像你访问数组元素一样:
val words = listOf("a", "abc", "ab", "def", "abcd") val byLength = words.groupBy { it.length } val result = byLength[3] // 得到 [abc, def],类型是 List<String>?(可空) println(result) // 输出 [abc, def]
注意:这种方式返回的是可空类型,如果键不存在(比如你写byLength[5]),会得到null。
2. 使用getOrDefault避免空值
如果你想在键不存在时返回一个默认值(比如空列表),可以用这个方法:
val result = byLength.getOrDefault(3, emptyList()) // 如果键3存在,返回[abc, def];不存在则返回空列表[]
3. 使用getValue强制获取(键确定存在时用)
如果你确定目标键一定在Map里,不想处理可空类型,可以用这个方法——但如果键不存在,会直接抛出异常:
val result = byLength.getValue(3) // 得到非空的 List<String> println(result) // 输出 [abc, def]
简单总结一下,根据你的需求选对应的方法就好啦,日常开发里[]和getOrDefault用得比较多~
内容的提问来源于stack exchange,提问作者Zim
相关产品推荐
相关产品推荐

