Groovyでマップを反復処理するためのクイックガイド
1. 序章
この短いチュートリアルでは、 each 、 eachWithIndex、、 for-in などの標準言語機能を使用して、Groovyでマップを反復処理する方法を見ていきます。ループ。
2. 各メソッド
次のマップがあると想像してみましょう。
def map = [
'FF0000' : 'Red',
'00FF00' : 'Lime',
'0000FF' : 'Blue',
'FFFF00' : 'Yellow'
]
each メソッドに単純なクロージャーを提供することで、マップを反復処理できます。
map.each { println "Hex Code: $it.key = Color Name: $it.value" }
エントリ変数に名前を付けることで、読みやすさを少し向上させることもできます。
map.each { entry -> println "Hex Code: $entry.key = Color Name: $entry.value" }
または、キーと値を別々に扱う場合は、クロージャーに別々にリストすることができます。
map.each { key, val ->
println "Hex Code: $key = Color Name $val"
}
Groovyでは、リテラル表記で作成されたマップが順序付けられます。出力は、元のマップで定義したのと同じ順序になると予想できます。
3. eachWithIndexメソッド
反復中にインデックスを知りたい場合があります。
たとえば、マップ内の1行おきにインデントしたいとします。 Groovyでこれを行うには、eachWithIndexメソッドをentryおよびindex変数とともに使用します。
map.eachWithIndex { entry, index ->
def indent = ((index == 0 || index % 2 == 0) ? " " : "")
println "$index Hex Code: $entry.key = Color Name: $entry.value"
}
each メソッドと同様に、 entry の代わりに、keyおよびvalue変数をクロージャーで使用することを選択できます。
map.eachWithIndex { key, val, index ->
def indent = ((index == 0 || index % 2 == 0) ? " " : "")
println "$index Hex Code: $key = Color Name: $val"
}
4. For-inループの使用
一方、ユースケースが命令型プログラミングに適している場合は、for-inステートメントを使用してマップを反復処理することもできます。
for (entry in map) {
println "Hex Code: $entry.key = Color Name: $entry.value"
}
5. 結論
この短いチュートリアルでは、GroovyのeachおよびeachWithIndexメソッドとfor-inループを使用してマップを反復処理する方法を学習しました。
サンプルコードはGitHubで入手できます。