如何在Kotlin中遍历hashmap?


Answers:


205

并不是那么困难:

for ((key, value) in map) {
    println("$key = $value")
}

OR
更新按照@ RuckusT-BOOM的@ KenZira的信息。)

 map.forEach { (key, value) -> println("$key = $value") }

38
值得注意的是第二个版本可能会在Android上引起问题,因此您可能要使用map.forEach { (key, value) -> println("$key = $value") }
Ruckus T-Boom

1
@ RuckusT-Boom以什么方式引起问题?
Anigif

7
Android没有(或在发表评论时没有)完全支持Java 8,第二个示例是Java 8调用。使用Kotlin解构的等效调用看起来非常相似,但是您需要在方括号周围加上参数{ (key, value) -> ... }。Ken Zira的答案中有更多信息。
Ruckus T-Boom

1
我们发现了@ RuckusT-Boom在Android上更好的方法:)(由于ClassNotFoundException,我们很难弄清楚)
Micha

1
@ RuckusT-Boom的答案是正确的,我们在不同API级别的发布测试中遇到了这个问题,并且不清楚为什么它崩溃了,错误消息也令人误解
Alaa Eddine Cherbib

64

对于以上答案,请注意Android以下内容N

map.forEach { key, value -> println("$key = $value") }

引用Java 8api会导致:

Rejecting re-init on previously-failed class java.lang.Class<T>

map.forEach { (key, value) -> println("$key = $value") }

Kotlin功能


是的,我也为此浪费了半天。for((key,val)...)解决了这个问题。
andude

2

未提及的另一种方法是:

val mapOfItems = hashMapOf(1 to "x", 2 to "y", -1 to "zz")
mapOfItems.map { (key, value) -> println("$key = $value") }
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.