Collections in Java: List, Set, Map and Comparator
ArrayList, LinkedList, HashMap, HashSet and how to sort with Comparator, with labs where you add, search and sort elements live.
Un array tiene tamaño fijo. Las colecciones del paquete java.util crecen y
encogen solas y traen métodos para buscar, ordenar y recorrer. Las tres familias:
List (orden, permite repetidos), Set (sin repetidos) y
Map (pares clave→valor).
ArrayList: the list you'll use most
List<String> frutas = new ArrayList<>();
frutas.add("manzana");
frutas.add("pera");
frutas.get(0); // "manzana"
frutas.size(); // 2
frutas.remove("pera");
frutas.contains("uva"); // false
ArrayList vs LinkedList
Ambas implementan List. La diferencia está en cómo guardan los datos por dentro y, por tanto, en qué operaciones son rápidas.
| Operación | ArrayList | LinkedList |
|---|---|---|
get(i) (acceso por índice) | ⚡ Rápido O(1) | 🐢 Lento O(n) |
add() al final | ⚡ Rápido (amortizado) | ⚡ Rápido O(1) |
| Insertar/borrar por el principio o el medio | 🐢 Lento (mueve elementos) | ⚡ Rápido si ya estás ahí |
| Memoria | Menos | Más (guarda punteros) |
ArrayList salvo que hagas
muchísimas inserciones/borrados al principio de la lista.HashMap: key → value pairs
Map<String, Integer> edades = new HashMap<>();
edades.put("Ana", 30);
edades.put("Luis", 25);
edades.get("Ana"); // 30
edades.getOrDefault("Eva", 0); // 0
edades.containsKey("Luis"); // true
HashSet: no duplicates
Un Set ignora los elementos repetidos. Truco habitual para quitar duplicados de una lista.
Sorting with Comparator
Collections.sort(lista) usa el orden «natural» (Comparable). Para otro criterio
le pasas un Comparator: lista.sort(Comparator.comparing(Persona::getEdad)).
Check what you've learned
"rojo", "azul" y otra vez "rojo" a un HashSet. ¿size()?get(500)?map.getOrDefault("x", 0) devuelve…