Bagaimana cara melakukan iterasi pada hashmap di Kotlin?


Jawaban:


213

Tidak sesulit itu:

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

ATAU
( Diperbarui sesuai dengan informasi @ RuckusT-Boom dan @ KenZira .)

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

38
Perlu dicatat bahwa versi kedua dapat menyebabkan masalah pada Android, jadi Anda mungkin ingin menggunakanmap.forEach { (key, value) -> println("$key = $value") }
Ruckus T-Boom

1
@ RuckusT-Boom dalam hal apa hal itu menyebabkan masalah?
Anigif

7
Android tidak (atau tidak pada saat komentar itu) memiliki dukungan penuh untuk Java 8, dan contoh kedua adalah panggilan Java 8. Panggilan setara yang menggunakan destructuring Kotlin terlihat sangat mirip, tetapi Anda membutuhkan tanda kurung di sekitar argumen { (key, value) -> ... }. Ken Zira memiliki lebih banyak info dalam jawabannya.
Ruckus T-Boom

1
Kami menemukan cara sulit bahwa cara @ RuckusT-Boom lebih baik di Android :) (Karena ClassNotFoundException kami kesulitan mencari tahu)
Micha

1
Jawaban @ RuckusT-Boom adalah benar, kami mengalami masalah ini selama uji rilis pada API Level yang berbeda, dan tidak begitu jelas mengapa itu mogok, pesan kesalahan juga menyesatkan
Alaa Eddine Cherbib

64

Untuk jawaban di atas, berhati-hatilah Android bawah ini N!

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

referensi ke Java 8api yang mengarah ke:

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

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

adalah Kotlinfitur


Ya, saya juga menyia-nyiakan setengah hari untuk ini. untuk ((key, val) ...) memecahkan masalah.
andude

2

Cara lain yang belum disebutkan adalah:

val mapOfItems = hashMapOf(1 to "x", 2 to "y", -1 to "zz")
mapOfItems.map { (key, value) -> println("$key = $value") }
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.