Kotlin'de hashmap üzerinde nasıl yineleme yapılır?


Yanıtlar:


213

O kadar zor değil:

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

YA
( Güncellendi uyarınca @ RuckusT-Bom en ve KenZira en @ bilgi.)

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

38
İkinci sürümün Android'de sorunlara neden olabileceğini belirtmekte fayda var, bu yüzden kullanmak isteyebilirsinizmap.forEach { (key, value) -> println("$key = $value") }
Ruckus T-Boom

1
@ RuckusT-Boom ne şekilde sorunlara neden oluyor?
Anigif

7
Android, Java 8 için tam desteğe sahip değil (veya bu yorum sırasında yoktu) ve ikinci örnek bir Java 8 çağrısıdır. Kotlin yıkımını kullanan eşdeğer çağrı çok benzer görünüyor, ancak argümanların etrafında parantezlere ihtiyacınız var { (key, value) -> ... }. Ken Zira'nın cevabında daha fazla bilgi var.
Ruckus T-Boom

1
@ RuckusT-Boom'un yönteminin Android'de daha iyi olduğunu zor yoldan öğrendik :) (ClassNotFoundException nedeniyle anlamakta zorlanıyoruz)
Micha

1
@ RuckusT-Boom'un cevabı doğruydu, bu sorunu farklı API Seviyelerinde sürüm testlerinde yaşadık ve neden çöktüğü çok net değildi, hata mesajı da yanıltıcı
Alaa Eddine Cherbib

64

Yukarıdaki cevap için Androidaşağıdakilere dikkat edin N!

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

Java 8api referansı şunlara yol açar:

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

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

olduğu Kotlinözellik


Evet, bununla da yarım günümü boşa harcadım. for ((key, val) ...) sorunu çözdü.
andude

2

Bahsedilmeyen başka bir yol şudur:

val mapOfItems = hashMapOf(1 to "x", 2 to "y", -1 to "zz")
mapOfItems.map { (key, value) -> println("$key = $value") }
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.