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.
- 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) }
- 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}") }
- 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
- Crea una lista con los números del 1 al 10.
- Añade el número 11 al final de la lista.
- Elimina el número 5 de la lista.
- Modifica el primer elemento de la lista para que sea 100.
- 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
- Crea un mapa con las claves "nombre", "edad" y "ciudad" y sus respectivos valores.
- Añade una nueva clave "país" con el valor "España".
- Modifica el valor de la clave "ciudad" para que sea "Barcelona".
- Elimina la clave "edad".
- 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.
Curso de Programación Groovy
Módulo 1: Introducción a Groovy
Módulo 2: Sintaxis de Groovy y Características del Lenguaje
Módulo 3: Programación Orientada a Objetos en Groovy
Módulo 4: Características Avanzadas de Groovy
Módulo 5: Groovy en la Práctica
- Entrada/Salida de Archivos
- Trabajando con XML y JSON
- Acceso a Bases de Datos
- Desarrollo Web con Groovy
Módulo 6: Pruebas y Depuración
Módulo 7: Ecosistema y Herramientas de Groovy
- Herramienta de Construcción Gradle
- Framework de Pruebas Spock
- Framework Grails
- Otras Bibliotecas y Herramientas de Groovy
Módulo 8: Mejores Prácticas y Temas Avanzados
- Estilo de Código y Convenciones
- Optimización del Rendimiento
- Consideraciones de Seguridad
- Concurrencia en Groovy