如何从Kotlin的Hashmap获取价值的关键?

Asa*_*hry 3 android hashmap kotlin

HashMap在科特林

val map = HashMap<String, String>()
Run Code Online (Sandbox Code Playgroud)

我想知道如何从中获取特定值的键,HashMap而无需迭代完成HashMap

euc*_*lio 9

在最坏的情况下(如果映射中不存在匹配值),您将不得不迭代整个映射。但是,一旦找到匹配项,此代码就会停止迭代:

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"
Run Code Online (Sandbox Code Playgroud)


P.J*_*uni 8

使用 filterValues {}

val map = HashMap<String, String>()
val keys = map.filterValues { it == "your_value" }.keys
Run Code Online (Sandbox Code Playgroud)

并且keys将是与给定值匹配的所有键的集合

  • &gt; 无需遍历完整的 `HashMap` (3认同)
  • 如果你想去掉大括号“[a]”,你可以使用“.first()”或“.last()”。你会得到“a” (2认同)

Ger*_*eto 7

如果您不断地通过值查找键,一个可能的解决方案可能是反转映射,这样您就可以通过任何值获取任何键。

例如:

val reversed = map.entries.associate{(k,v)-> v to k}

val resultKey = reversed[value]
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你!