En Groovy, las colecciones son estructuras de datos que permiten almacenar y manipular grupos de elementos. Groovy proporciona una variedad de colecciones, como listas, mapas y conjuntos, que son fáciles de usar y ofrecen una gran flexibilidad. En esta sección, exploraremos las colecciones más comunes y cómo utilizarlas.

  1. Listas

Las listas en Groovy son similares a los arrays en otros lenguajes de programación, pero con más funcionalidades. Las listas pueden contener elementos de diferentes tipos y se pueden modificar dinámicamente.

Creación de Listas

// Creación de una lista vacía
def emptyList = []

// Creación de una lista con elementos
def numbers = [1, 2, 3, 4, 5]
def mixedList = [1, "Groovy", true, 3.14]

Acceso a Elementos

def numbers = [1, 2, 3, 4, 5]

// Acceso a elementos por índice
println(numbers[0]) // Imprime: 1
println(numbers[2]) // Imprime: 3

// Acceso a elementos con índices negativos
println(numbers[-1]) // Imprime: 5 (último elemento)
println(numbers[-2]) // Imprime: 4 (penúltimo elemento)

Modificación de Listas

def numbers = [1, 2, 3, 4, 5]

// Añadir elementos
numbers << 6
numbers.add(7)

// Eliminar elementos
numbers.remove(0) // Elimina el primer elemento
numbers.remove((Integer) 3) // Elimina el número 3

// Modificar elementos
numbers[0] = 10

Iteración sobre Listas

def numbers = [1, 2, 3, 4, 5]

// Iteración con un bucle for
for (num in numbers) {
    println(num)
}

// Iteración con el método each
numbers.each { num ->
    println(num)
}

  1. Mapas

Los mapas en Groovy son colecciones de pares clave-valor. Son similares a los diccionarios en Python o los objetos en JavaScript.

Creación de Mapas

// Creación de un mapa vacío
def emptyMap = [:]

// Creación de un mapa con elementos
def person = [name: "John", age: 30, city: "New York"]

Acceso a Elementos

def person = [name: "John", age: 30, city: "New York"]

// Acceso a valores por clave
println(person["name"]) // Imprime: John
println(person.age) // Imprime: 30

Modificación de Mapas

def person = [name: "John", age: 30, city: "New York"]

// Añadir o modificar elementos
person["country"] = "USA"
person.city = "Los Angeles"

// Eliminar elementos
person.remove("age")

Iteración sobre Mapas

def person = [name: "John", age: 30, city: "New York"]

// Iteración con un bucle for
for (entry in person) {
    println("${entry.key}: ${entry.value}")
}

// Iteración con el método each
person.each { key, value ->
    println("${key}: ${value}")
}

  1. Conjuntos

Los conjuntos en Groovy son colecciones que no permiten elementos duplicados. Son útiles cuando se necesita garantizar la unicidad de los elementos.

Creación de Conjuntos

// Creación de un conjunto vacío
def emptySet = [] as Set

// Creación de un conjunto con elementos
def numbers = [1, 2, 3, 4, 5] as Set

Modificación de Conjuntos

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

// Añadir elementos
numbers << 6
numbers.add(7)

// Eliminar elementos
numbers.remove(1)

Iteración sobre Conjuntos

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

// Iteración con un bucle for
for (num in numbers) {
    println(num)
}

// Iteración con el método each
numbers.each { num ->
    println(num)
}

Ejercicios Prácticos

Ejercicio 1: Manipulación de Listas

  1. Crea una lista con los números del 1 al 10.
  2. Añade el número 11 al final de la lista.
  3. Elimina el número 5 de la lista.
  4. Modifica el primer elemento de la lista para que sea 100.
  5. Imprime todos los elementos de la lista.

Solución

def numbers = (1..10).toList()
numbers << 11
numbers.remove((Integer) 5)
numbers[0] = 100
numbers.each { println(it) }

Ejercicio 2: Manipulación de Mapas

  1. Crea un mapa con las claves "nombre", "edad" y "ciudad" y sus respectivos valores.
  2. Añade una nueva clave "país" con el valor "España".
  3. Modifica el valor de la clave "ciudad" para que sea "Barcelona".
  4. Elimina la clave "edad".
  5. Imprime todas las claves y valores del mapa.

Solución

def person = [nombre: "Ana", edad: 25, ciudad: "Madrid"]
person["país"] = "España"
person.ciudad = "Barcelona"
person.remove("edad")
person.each { key, value -> println("${key}: ${value}") }

Conclusión

En esta sección, hemos explorado las colecciones en Groovy, incluyendo listas, mapas y conjuntos. Hemos aprendido cómo crear, modificar y acceder a estos tipos de colecciones, así como cómo iterar sobre ellas. Las colecciones son una parte fundamental de la programación en Groovy y proporcionan una base sólida para trabajar con datos de manera eficiente. En el próximo módulo, profundizaremos en las closures, una característica poderosa y flexible de Groovy.

© Copyright 2024. Todos los derechos reservados