En aquest tema, explorarem les col·leccions en Groovy, una part fonamental del llenguatge que permet emmagatzemar i manipular conjunts de dades de manera eficient. Groovy proporciona una àmplia gamma de col·leccions, incloent llistes, mapes, conjunts i més. Aprendrem com crear, modificar i utilitzar aquestes col·leccions amb exemples pràctics.

Índex

Introducció a les Col·leccions

Les col·leccions són estructures de dades que permeten emmagatzemar múltiples elements en una sola unitat. Groovy ofereix diverses col·leccions que es poden utilitzar per a diferents propòsits:

  • Llistes: Emmagatzemen elements en una seqüència ordenada.
  • Mapes: Emmagatzemen parelles clau-valor.
  • Conjunts: Emmagatzemen elements únics sense ordre específic.

Llistes

Les llistes en Groovy són similars a les arrays en altres llenguatges de programació, però amb més funcionalitats. Es poden crear utilitzant la notació de claudàtors [].

Creació de Llistes

def llistaBuida = []
def llistaDeNumeros = [1, 2, 3, 4, 5]
def llistaDeStrings = ["Groovy", "Java", "Python"]

Accés a Elements

def primerElement = llistaDeNumeros[0]  // 1
def segonElement = llistaDeStrings[1]   // "Java"

Modificació de Llistes

llistaDeNumeros[0] = 10
llistaDeStrings << "Ruby"  // Afegeix "Ruby" al final de la llista

Mètodes Comuns

Mètode Descripció
size() Retorna la mida de la llista
add(element) Afegeix un element a la llista
remove(index) Elimina l'element en la posició especificada
contains(element) Comprova si la llista conté l'element

Exemple Pràctic

def llista = [1, 2, 3, 4, 5]
println "Mida de la llista: ${llista.size()}"
llista.add(6)
println "Llista després d'afegir un element: $llista"
llista.remove(2)
println "Llista després d'eliminar l'element en la posició 2: $llista"
println "La llista conté el número 4? ${llista.contains(4)}"

Mapes

Els mapes emmagatzemen parelles clau-valor i són molt útils per a associar dades.

Creació de Mapes

def mapaBuit = [:]
def mapaDePersones = [nom: "Joan", edat: 30, ciutat: "Barcelona"]

Accés a Elements

def nom = mapaDePersones['nom']  // "Joan"
def edat = mapaDePersones.edat   // 30

Modificació de Mapes

mapaDePersones['edat'] = 31
mapaDePersones.ciutat = "Madrid"

Mètodes Comuns

Mètode Descripció
size() Retorna la mida del mapa
put(clau, valor) Afegeix una parella clau-valor al mapa
remove(clau) Elimina l'entrada amb la clau especificada
containsKey(clau) Comprova si el mapa conté la clau

Exemple Pràctic

def mapa = [nom: "Anna", edat: 25, ciutat: "València"]
println "Mida del mapa: ${mapa.size()}"
mapa.put('país', 'Espanya')
println "Mapa després d'afegir una entrada: $mapa"
mapa.remove('edat')
println "Mapa després d'eliminar l'entrada 'edat': $mapa"
println "El mapa conté la clau 'ciutat'? ${mapa.containsKey('ciutat')}"

Conjunts

Els conjunts emmagatzemen elements únics i no permeten duplicats.

Creació de Conjunts

def conjuntBuit = [] as Set
def conjuntDeNumeros = [1, 2, 3, 4, 5] as Set

Modificació de Conjunts

conjuntDeNumeros << 6
conjuntDeNumeros.remove(3)

Mètodes Comuns

Mètode Descripció
size() Retorna la mida del conjunt
add(element) Afegeix un element al conjunt
remove(element) Elimina l'element especificat del conjunt
contains(element) Comprova si el conjunt conté l'element

Exemple Pràctic

def conjunt = [1, 2, 3, 4, 5] as Set
println "Mida del conjunt: ${conjunt.size()}"
conjunt.add(6)
println "Conjunt després d'afegir un element: $conjunt"
conjunt.remove(2)
println "Conjunt després d'eliminar l'element 2: $conjunt"
println "El conjunt conté el número 4? ${conjunt.contains(4)}"

Iteració sobre Col·leccions

Groovy proporciona diverses maneres d'iterar sobre col·leccions, com ara bucles for, each, collect, etc.

Exemple d'Iteració amb each

def llista = [1, 2, 3, 4, 5]
llista.each { element ->
    println "Element: $element"
}

Exemple d'Iteració amb collect

def llista = [1, 2, 3, 4, 5]
def llistaDoble = llista.collect { it * 2 }
println "Llista original: $llista"
println "Llista amb elements duplicats: $llistaDoble"

Exercicis Pràctics

Exercici 1: Treballant amb Llistes

  1. Crea una llista amb els números del 1 al 10.
  2. Afegeix el número 11 al final de la llista.
  3. Elimina el número 5 de la llista.
  4. Comprova si la llista conté el número 7.
  5. Itera sobre la llista i imprimeix cada element.

Solució

def llista = (1..10).toList()
llista << 11
llista.remove(4)
println "La llista conté el número 7? ${llista.contains(7)}"
llista.each { println "Element: $it" }

Exercici 2: Treballant amb Mapes

  1. Crea un mapa amb les següents parelles clau-valor: nom: "Maria", edat: 28, ciutat: "Girona".
  2. Afegeix una nova entrada amb la clau "país" i el valor "Espanya".
  3. Modifica el valor de la clau "ciutat" a "Tarragona".
  4. Elimina l'entrada amb la clau "edat".
  5. Comprova si el mapa conté la clau "nom".

Solució

def mapa = [nom: "Maria", edat: 28, ciutat: "Girona"]
mapa.put('país', 'Espanya')
mapa.ciutat = "Tarragona"
mapa.remove('edat')
println "El mapa conté la clau 'nom'? ${mapa.containsKey('nom')}"

Conclusió

En aquesta secció, hem après sobre les col·leccions en Groovy, incloent llistes, mapes i conjunts. Hem vist com crear, modificar i iterar sobre aquestes col·leccions amb exemples pràctics. Les col·leccions són una eina poderosa en Groovy que permeten gestionar i manipular dades de manera eficient. En el proper tema, explorarem les closures, una altra característica important de Groovy.

© Copyright 2024. Tots els drets reservats