Kotlin에서 해시 맵을 반복하는 방법은 무엇입니까?


답변:


205

그렇게 어렵지 않습니다.

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

또는
( @ 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 붐의 대답은, 우리는 다른 API 레벨에 릴리스 테스트 중에이 문제를 올바른 가지고 있으며,이 오류 메시지는 오해의 소지 충돌 한 이유는 매우 분명하지 않다
알라 Eddine Cherbib

64

위의 답변은 Android아래에 주의 하세요 N!

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

다음 Java 8으로 이어지는 api에 대한 참조 :

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") }
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.