Як переглядати хеш-карту в Kotlin?


Відповіді:


206

Це не так складно:

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

АБО
( Оновлено відповідно до інформації @ RuckusT-Boom's та @ KenZira .)

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

38
Варто зазначити, що друга версія може спричинити проблеми на Android, тому, можливо, ви захочете використовуватиmap.forEach { (key, value) -> println("$key = $value") }
Ruckus T-Boom

1
@ RuckusT-Boom, яким чином це викликає проблеми?
Анігіф

7
Android не має (або не мав на момент цього коментаря) повної підтримки Java 8, а другий приклад - виклик Java 8. Еквівалентний виклик із використанням деструктуризації Kotlin виглядає дуже схожим, але вам потрібні дужки навколо аргументів { (key, value) -> ... }. У відповіді Кен Зіра має більше інформації.
Ruckus T-Boom

1
Ми важко зрозуміли, що шлях @ RuckusT-Boom кращий на Android :) (Через ClassNotFoundException нам важко було з’ясувати)
Майка,

1
Відповідь @ RuckusT-Boom правильна, у нас виникла ця проблема під час тестів випусків на різних рівнях API, і було не зовсім зрозуміло, чому вона
падала,

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") }
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.