Una guía rápida para iterar un mapa en Groovy

1. Introducción

En este breve tutorial, veremos formas de iterar sobre un mapa en Groovy usando características de lenguaje estándar como each , eachWithIndex y un bucle for-in .

2. El método each

Imaginemos que tenemos el siguiente mapa:

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

Podemos iterar sobre el mapa proporcionando a cada método un cierre simple:

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

También podemos mejorar un poco la legibilidad dando un nombre a la variable de entrada:

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

O, si preferimos abordar la clave y el valor por separado, podemos enumerarlos por separado en nuestro cierre:

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

En Groovy, los mapas creados con la notación literal están ordenados. Podemos esperar que nuestra salida esté en el mismo orden que definimos en nuestro mapa original.

3. El método eachWithIndex

A veces queremos conocer el índice mientras iteramos.

Por ejemplo, digamos que queremos sangrar cada dos filas en nuestro mapa. Para hacer eso en Groovy, usaremos el método eachWithIndex con variables de entrada e índice :

map.eachWithIndex  entry, index -> def indent = ((index == 0 

Al igual que con cada método, podemos optar por utilizar las variables clave y de valor en nuestro cierre en lugar de la entrada :

map.eachWithIndex  key, val, index -> def indent = ((index == 0 

4. Usando un bucle For-in

Por otro lado, si nuestro caso de uso se presta mejor a la programación imperativa, también podemos usar una declaración for-in para iterar sobre nuestro mapa:

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

5. Conclusión

En este breve tutorial, hemos aprendido la manera de recorrer un mapa mediante maravilloso de cada uno y eachWithIndex métodos y una para-en bucle.

El código de ejemplo está disponible en GitHub.