Concepto de Colecciones en Java
En el ecosistema de Java, una colección es un objeto que actúa como un contenedor para agrupar múltiples elementos en una sola unidad. Estas estructuras permiten almacenar, recuperar y manipular datos de manera eficiente, facilitando la gestión de información en memoria durante la ejecución de una aplicación.
Diferencias Fundamentales entre Arrays y Colecciones
Aunque ambos sirven para almacenar datos, presentan diferencias críticas en su comportamiento:
- Arrays: Tienen una capacidad fija definida en el momento de su creación. Solo pueden almacenar elementos del mismo tipo (primitivos u objetos).
- Colecciones: Son dinámicas; su tamaño aumenta o disminuye automáticamente según la necesidad. Principalmente manejan objetos, lo que ofrece una mayor flexibilidad en el desarollo de software moderno.
La Clase ArrayList y el Uso de Genéricos
El ArrayList es una de las implementaciones más utilizadas de la interfaz List. Utiliza un array interno que se redimensiona automáticamente.
Es fundamental utilizar Genéricos (representados por <T>) para garantizar la seguridad de tipos y evitar errores de conversión en tiempo de ejecución.
import java.util.ArrayList;
public class GestionUsuarios {
public static void main(String[] args) {
// Inicialización con Genéricos para cadenas de texto
ArrayList<String> empleados = new ArrayList<>();
empleados.add("Ana García");
empleados.add("Luis Pérez");
empleados.add("Sofía Torres");
// Inicialización para valores numéricos decimales
ArrayList<Double> calificaciones = new ArrayList<>();
calificaciones.add(85.5);
calificaciones.add(92.0);
calificaciones.add(78.3);
System.out.println("Lista de empleados: " + empleados);
System.out.println("Registro de notas: " + calificaciones);
}
}
Operaciones Fundamentales (CRUD)
El ArrayList proporciona métodos integrados para realizar operaciones básicas de gestión de datos:
import java.util.ArrayList;
public class OperacionesBasicas {
public static void main(String[] args) {
ArrayList<String> ciudades = new ArrayList<>();
// Adición de elementos
ciudades.add("Madrid");
ciudades.add("Bogotá");
ciudades.add("Ciudad de México");
// Lectura de un elemento específico por índice
String capital = ciudades.get(1);
System.out.println("Ciudad seleccionada: " + capital);
// Obtener el tamaño total de la colección
System.out.println("Total de ciudades: " + ciudades.size());
ejecutarActualizacion();
ejecutarEliminacion();
}
private static void ejecutarActualizacion() {
ArrayList<String> lenguajes = new ArrayList<>();
lenguajes.add("Java");
lenguajes.add("Python");
// Modificación: Reemplaza el elemento en el índice 1
lenguajes.set(1, "Kotlin");
System.out.println("Lenguajes actualizados: " + lenguajes);
}
private static void ejecutarEliminacion() {
ArrayList<String> inventario = new ArrayList<>();
inventario.add("Laptop");
inventario.add("Monitor");
inventario.add("Teclado");
// Eliminación por valor u objeto
boolean eliminado = inventario.remove("Monitor");
System.out.println("¿Se eliminó el item?: " + eliminado);
System.out.println("Inventario restante: " + inventario);
}
}
Iteración y Procesamiento de Datos
Recorrer una colección es una tarea común para realizar filtros o transformaciones. A continuación, se muestra cómo iterar sobre un ArrayList y aplicar una condición lógica:
import java.util.ArrayList;
public class AnalisisDatos {
public static void main(String[] args) {
ArrayList<String> productos = new ArrayList<>();
productos.add("Smartphone");
productos.add("TV");
productos.add("Radio");
productos.add("Microondas");
productos.add("PC");
System.out.println("Productos con nombres extensos:");
for (int i = 0; i < productos.size(); i++) {
String item = productos.get(i);
// Filtrar productos cuyo nombre tenga más de 5 caracteres
if (item.length() > 5) {
System.out.println("Item detectado: " + item);
}
}
}
}