如何在Kotlin中通过键的前缀从Map中获取对应值
Kotlin中按键前缀从Map取值的优化方法
已知每个前缀在Map中仅出现一次且必存在,这里给你几种比遍历键列表更简洁高效的实现方式:
- 使用
find直接匹配键(推荐,短路遍历更高效)find会在找到第一个符合条件的键值对后立即停止遍历,比遍历整个Map的filterKeys更节省性能:
map.entries.find { it.key.startsWith("bbb") }!!.value
如果想保留空安全处理(哪怕题目说必存在),可以用:
map.entries.find { it.key.startsWith("bbb") }?.value ?: error("未找到匹配前缀的键")
- 优化你现有的实现
你的代码可以简化,不需要转List再提取值,直接取过滤后Map的values集合的第一个元素:
map.filterKeys { it.startsWith("bbb") }.values.first()
- 使用
firstNotNullOf(Kotlin 1.4及以上版本适用)
这个函数会遍历Map的键值对,返回第一个符合条件的非空值,写法更紧凑:
map.firstNotNullOf { (key, value) -> value.takeIf { key.startsWith("bbb") } }
内容的提问来源于stack exchange,提问作者ceslo99
相关产品推荐
相关产品推荐

