kotlin - 在 Map 上按值谓词查找的惯用方式
问题描述
搜索地图并找到与值或 null 的谓词匹配的第一个键的最佳方法是什么?我下面的代码对于 kotlin 标准来说看起来太冗长了。请帮忙。
fun <K, V> find(map : Map<K, V?>, predicate: (V?) -> Boolean): K? {
var key : K? = null
map.forEach { it ->
if(predicate(it.value)) {
key = it.key
return@forEach
}
}
return key
}
解决方案
map.entries.firstOrNull { predicate(it.value) }?.key
entries
用于使Map
可迭代,并且是“免费的”(因为它不需要迭代地图)。当然,它启用了它Map
本身缺少的所有集合扩展功能,而不仅仅是firstOrNull
.
(您也可以用 替换firstOrNull
;find
它们在这里是等价的。)
推荐阅读
- jboss - JBoss 7.1.0:executor.submit() 如何调试(无异常但任务未启动)
- javascript - Redux-form 未格式化帖子数据和 [object Object] 问题
- windows - Windows Shell 脚本默认文件夹
- interrupt - 我可以检测从哪个模式(EL1,EL0,...)SError 中断引起的吗?
- matlab - 如何在 Matlab 中反转内联函数?
- javascript - 多天离开多个时区的javascript计时器
- android - 一段时间后,按钮声音停止工作 kotlin
- powerbi - 基于其他表的计算列。直接查询sql
- c# - 如何使用 CsvEngine.CsvToDataTable() 修剪所有列值?
- php - 重新加载页面并返回上一页后选中的复选框