Una guida rapida per iterare una mappa in Groovy

1. Introduzione

In questo breve tutorial, esamineremo i modi per iterare su una mappa in Groovy utilizzando le funzionalità del linguaggio standard come each , eachWithIndex e un ciclo for-in .

2. Il metodo each

Immaginiamo di avere la seguente mappa:

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

Possiamo iterare sulla mappa fornendo al metodo each una semplice chiusura:

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

Possiamo anche migliorare un po 'la leggibilità dando un nome alla variabile di ingresso:

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

Oppure, se preferiamo affrontare la chiave e il valore separatamente, possiamo elencarli separatamente nella nostra chiusura:

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

In Groovy, le mappe create con la notazione letterale vengono ordinate. Possiamo aspettarci che il nostro output sia nello stesso ordine che abbiamo definito nella nostra mappa originale.

3. Il metodo eachWithIndex

A volte vogliamo conoscere l' indice mentre stiamo iterando.

Ad esempio, supponiamo di voler indentare ogni altra riga nella nostra mappa. Per farlo in Groovy, useremo il metodo eachWithIndex con le variabili entry e index :

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

Come con il metodo each , possiamo scegliere di utilizzare le variabili chiave e valore nella nostra chiusura invece della voce :

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

4. Utilizzo di un ciclo For-in

D'altra parte, se il nostro caso d'uso si presta meglio alla programmazione imperativa, possiamo anche usare un'istruzione for-in per iterare sulla nostra mappa:

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

5. conclusione

In questo breve tutorial, abbiamo imparato a iterare una mappa utilizzando Groovy di ogni e eachWithIndex metodi e di una per-in loop.

Il codice di esempio è disponibile su GitHub.