groovy-map-iterating
Groovyでマップを反復処理するためのクイックガイド
-
link:/category/programming/ [プログラミング]
1. 前書き
この短いチュートリアルでは、_each_、__eachWithIndex、__and a __for-in __loopなどの標準言語機能を使用して、Groovyでマップを反復処理する方法を見ていきます。
2. _each_メソッド
次のマップがあると想像してみましょう。
def map = [
'FF0000' : 'Red',
'00FF00' : 'Lime',
'0000FF' : 'Blue',
'FFFF00' : 'Yellow'
]
map.each { println "Hex Code: $it.key = Color Name: $it.value" }
entry変数に名前を付けることで、読みやすさを少し改善することもできます。
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_メソッド
繰り返し処理中に_index_を知りたい場合があります。
たとえば、マップ内の他のすべての行をインデントしたいとします。 Groovyでそれを行うには、_entry_変数と_index_変数で_eachWithIndex_メソッドを使用します。
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_ループを使用してマップを反復する方法を学びました。
サンプルコードはhttps://github.com/eugenp/tutorials/tree/master/core-groovy[GitHub]で入手できます。