Kotlinでハッシュマップを反復処理する方法は?


回答:


211

それはそれほど難しいことではありません:

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

または
@ RuckusT-Boomおよび@KenZiraの情報に従って更新されます。)

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

38
2番目のバージョンはAndroidで問題を引き起こす可能性があるため、使用することをお勧めしますmap.forEach { (key, value) -> println("$key = $value") }
Ruckus T-Boom

1
@ RuckusT-ブームはどのように問題を引き起こしますか?
anigif 2018年

7
AndroidはJava8を完全にサポートしていません(またはそのコメントの時点ではサポートしていませんでした)。2番目の例はJava8呼び出しです。Kotlinデストラクチャリングを使用した同等の呼び出しは非常によく似ていますが、引数を角かっこで囲む必要があります{ (key, value) -> ... }。ケンジラは彼の答えにもっと情報があります。
ラッカスTブーム

1
@ RuckusT-Boomの方法がAndroidで優れているという難しい方法を見つけました:)(ClassNotFoundExceptionのため、理解するのに苦労しました)
Micha 2018年

1
@ RuckusT-Boomの答えは正解です。さまざまなAPIレベルでのリリーステスト中にこの問題が発生しました。クラッシュした理由は明確ではなく、エラーメッセージも誤解を招く可能性があります
Alaa Eddine Cherbib 2018年

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.