hashmap - Kotlin HashMap 使用数组包含键

标签 hashmap kotlin

是否有任何方法可以检查 HashMap 是否包含一组特定的键(这些键是在数组中给出的)。当我尝试类似下面的代码时,它返回 false。

map.containsKey(arrayOf("2018-01-16"))

如果我尝试以下代码,它可以工作,但我需要检查键,并且我需要搜索的键的数量不固定。

map.containsKey("2018-01-16")

最佳答案

您可以从按键本身开始,并使用 all 标准库中的函数:

val map = hashMapOf(...)
val keys = arrayOf("2018-01-16", "2018-01-17", "2018-01-18")
val containsAllKeys = keys.all { map.containsKey(it) }
<小时/>

如果您经常这样做并且希望在 Map 上拥有此功能类型,您可以随时将其添加为扩展名:

fun <K, V> Map<K, V>.containsKeys(keys: Array<K>) = keys.all { this.containsKey(it) }

val containsAllKeys = map.containsKeys(arrayOf("2018-01-16", "2018-01-17"))

您可能还想使用另一个采用 Iterable<K> 的函数来重载该扩展。作为参数。

关于hashmap - Kotlin HashMap 使用数组包含键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47849076/

相关文章:

java - 如果 equals 和 hashcode 比较 hashmap 中的不同值怎么办?

java - 如何在 iBatis 中获取排序后的结果?

android - 单击任何按钮时应用程序都会停止工作,错误表示找不到方法

java - 对 HashMap 中的值进行排序

java - IDocumentFilter 使用 HashMap 作为字典 Menu 来验证 JTextField

android - 尝试构建android应用程序包时出现"Uses reserved file or directory name ' lib '"错误

Kotlin 协程 : Do we need to synchronize shared state?

kotlin - 从 Firebase 存储中获取图像。 GlideApp Unresolved reference

Kotlin:按类生成工厂

java - 如何在 Java 中计算枚举的哈希码,以及如何将枚举哈希码组合为 HashMap 的键