Um guia rápido para iterar um mapa no Groovy

Um guia rápido para iterar um mapa no Groovy

1. Introdução

Neste breve tutorial, veremos maneiras de iterar em um mapa no Groovy usando recursos de linguagem padrão comoeach,eachWithIndex, and afor-in loop.

2. O Métodoeach

Vamos imaginar que temos o seguinte mapa:

def map = [
    'FF0000' : 'Red',
    '00FF00' : 'Lime',
    '0000FF' : 'Blue',
    'FFFF00' : 'Yellow'
]

Podemos iterar no mapa fornecendo o métodoeach com um fechamento simples:

map.each { println "Hex Code: $it.key = Color Name: $it.value" }

Também podemos melhorar um pouco a legibilidade, atribuindo um nome à variável de entrada:

map.each { entry -> println "Hex Code: $entry.key = Color Name: $entry.value" }

Ou, se preferirmos abordar a chave e o valor separadamente, podemos listá-los separadamente em nosso encerramento:

map.each { key, val ->
    println "Hex Code: $key = Color Name $val"
}

In Groovy, maps created with the literal notation are ordered. Podemos esperar que nossa saída esteja na mesma ordem que definimos em nosso mapa original.

3. O MétodoeachWithIndex

Às vezes, queremos saber oindex enquanto estamos iterando.

Por exemplo, digamos que queremos recuar todas as outras linhas em nosso mapa. Para fazer isso no Groovy, usaremos o métodoeachWithIndex com as variáveisentryeindex:

map.eachWithIndex { entry, index ->
    def indent = ((index == 0 || index % 2 == 0) ? "   " : "")
    println "$index Hex Code: $entry.key = Color Name: $entry.value"
}

Tal como acontece com o métodoeach, podemos escolher usar as variáveiskeyevalue em nosso fechamento em vez deentry:

map.eachWithIndex { key, val, index ->
    def indent = ((index == 0 || index % 2 == 0) ? "   " : "")
    println "$index Hex Code: $key = Color Name: $val"
}

4. Usando um loopFor-in

Por outro lado, se nosso caso de uso se adequar melhor à programação imperativa, também podemos usar uma instruçãofor-in para iterar em nosso mapa:

for (entry in map) {
    println "Hex Code: $entry.key = Color Name: $entry.value"
}

5. Conclusão

Neste breve tutorial, aprendemos como iterar um mapa usando os métodoseacheeachWithIndex do Groovy e um loopfor-in.

O código de exemplo está disponível emGitHub.