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で入手できます。