198 votes

Parcourez Map in Groovy?

J'essaie d'accomplir une tâche très simple à Groovy, mais je n'arrive pas à la faire fonctionner. J'essaie simplement de parcourir en boucle un objet de la carte et d'imprimer la clé et la valeur, mais ce code ne fonctionne pas.

 //A simple map
def map = [
           'iPhone':'iWebOS',
           'Android':'2.3.3',
           'Nokia':'Symbian',
           'Windows':'WM8'
           ]

//Print the values 
for(s in map) {
    println s + ":" + map[s]
}
 

J'essaie d'obtenir que la sortie ressemble à ceci:

 iPhone:iWebOS
Android:2.3.3
Nokia:Symbian
Windows:WM8
 

Quelqu'un pourrait-il s'il vous plaît expliquer comment faire cela?

374voto

Jack Points 61503

Assez simple avec une fermeture:

 def map = [
           'iPhone':'iWebOS',
           'Android':'2.3.3',
           'Nokia':'Symbian',
           'Windows':'WM8'
           ]

map.each{ k, v -> println "${k}:${v}" }
 

122voto

ubiquibacon Points 3212

Vous pouvez également utiliser une boucle for comme indiqué dans les documents Groovy :

 def map = ['a':1, 'b':2, 'c':3]
for ( e in map ) {
    print "key = ${e.key}, value = ${e.value}"
}

/*
Result:
key = a, value = 1
key = b, value = 2
key = c, value = 3
*/
 

Un avantage de l'utilisation d'une boucle for par opposition à une fermeture de each est un débogage plus facile, car vous ne pouvez pas atteindre un point d'arrêt à l'intérieur d'une fermeture de each (avec Netbeans ).

24voto

sbglasius Points 1752

Lorsque vous utilisez la boucle for, la valeur de s est un élément Map.Entry, ce qui signifie que vous pouvez obtenir la clé de s.key et la valeur de s.value.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X