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.