我在 Kotlin 中有一个 HashMap
。
val map = HashMap<String, String>()
我想知道如何从这个
HashMap
中获取特定值的键,而无需遍历整个HashMap
?
我想知道如何从这个HashMap
中获取特定值的键,而无需遍历整个HashMap
?
使用 filterValues {}
val map = HashMap<String, String>()
val keys = map.filterValues { it == "your_value" }.keys
而 keys
将是与给定值匹配的所有键的集合
HashMap
。 - Miha_x64[a]
,你可以使用 .first()
或 .last()
方法。这样你就可以得到 a
。 - sayil aguirre在最坏情况下(如果映射中不存在匹配的值),您将不得不遍历整个映射。但是,只要找到匹配项,此代码就会停止迭代:
val map = mapOf("a" to 1, "b" to 2, "c" to 3)
val matchingKey = map.entries.find { it.value == 3 }?.key
println(matchingKey) // prints "c"
如果你经常需要根据值来查找键,一种可能的解决方案是将地图反转,这样你就可以通过任何值获取任何键。
例如:
val reversed = map.entries.associate{(k,v)-> v to k}
val resultKey = reversed[value]
val hashMap = HashMap<String, String>() // Dummy HashMap.
val keyFirstElement = hashMap.keys.first() // Get key.
val valueOfElement = hashMap.getValue(keyFirstElement) // Get Value.
val keyByIndex = hashMap.keys.elementAt(0) // Get key by index.
val valueOfElement = hashMap.getValue(keyByIndex) // Get value.
filterValues {}
吗? - P.Juni