¿Cuándo usar cada colección (con ejemplos reales)?

En Java, el Framework de Colecciones es una pieza central del desarrollo profesional. Saber cuándo usar List, Set o Map no es solo conocimiento básico: es una habilidad clave evaluada en entrevistas técnicas y esencial para escribir código correcto, eficiente y mantenible.

En este artículo aprenderás:

  • Qué es List, Set y Map
  • En qué se diferencian
  • Cuándo usar cada uno
  • Ejemplos reales de proyectos backend
  • Errores comunes que debes evitar

Visión general del Framework de Colecciones

Diagrama conceptual simplificado:


👉 Punto clave:
Map no es una colección de elementos, sino una colección de pares clave–valor.

¿Qué es List?

Una List es una colección ordenada, que permite elementos duplicados y acceso por índice.

Implementaciones comunes:

  • ArrayList
  • LinkedList

Características principales

  • Mantiene el orden de inserción
  • Permite duplicados
  • Acceso por índice (get(i))
  • Tamaño dinámico

Ejemplo básico

List<String> nombres = new ArrayList<>();

nombres.add("Juan");
nombres.add("Ana");
nombres.add("Juan"); // permitido

Caso real de uso (empresa)

Cuándo usar List:

  • Resultados de una consulta SQL
  • Historial de transacciones
  • Lista de productos
  • Orden de pasos de un proceso
List<Transaccion> transacciones = transaccionService.obtenerPorCuenta(idCuenta);

Errores comunes con List

  • Acceder a índices fuera de rango.
  • Modificar la lista mientras se recorre.
  • Usar List cuando no importa el orden.

🔹 Set en Java

¿Qué es Set?

Un Set es una colección que NO permite elementos duplicados.

Implementaciones comunes:

  • HashSet
  • LinkedHashSet
  • TreeSet

Características principales

  • No permite duplicados
  • No garantiza orden (excepto LinkedHashSet)
  • No tiene índices
  • Ideal para validaciones

Ejemplo básico

Set<String> correos = new HashSet<>();

correos.add("a@email.com");
correos.add("b@email.com");
correos.add("a@email.com"); // ignorado

Caso real de uso (empresa)

Cuándo usar Set:

  • Correos únicos
  • Roles de usuario
  • Permisos
  • Códigos irrepetibles
Set<String> roles = new HashSet<>();
roles.add("ADMIN");
roles.add("USER");

Error común muy frecuente

Creer que Set reemplaza a List.
👉 No: si necesitas orden o índice, Set NO es la opción.

🔹 Map en Java

¿Qué es Map?

Un Map almacena datos en forma de clave–valor.

Implementaciones comunes:

  • HashMap
  • LinkedHashMap
  • TreeMap

Características principales

  • Claves únicas
  • Valores pueden repetirse
  • Acceso rápido por clave
  • Muy usado en backend

Ejemplo básico

Map<String, Integer> edades = new HashMap<>();

edades.put("Juan", 30);
edades.put("Ana", 25);

Acceder a valores

int edad = edades.get("Juan");

Caso real de uso (empresa)

Cuándo usar Map:

  • Cache de datos
  • Configuraciones
  • Agrupaciones
  • Búsquedas rápidas
Map<Long, Usuario> usuariosPorId = new HashMap<>();

usuariosPorId.put(1L, usuario);

Comparación clara: List vs Set vs Map

CaracterísticaListSetMap
Permite duplicadosNoValores sí
Mantiene ordenNo (depende)No
Acceso por índiceNoNo
Acceso por claveNoNo
Uso típicoSecuenciasUnicidadBúsqueda

Ejemplo real comparativo (muy didáctico)

Lista de pedidos (orden importa)

List<Pedido> pedidos = new ArrayList<>();

Correos únicos

Set<String> correos = new HashSet<>();

Usuarios por ID

Map<Long, Usuario> usuarios = new HashMap<>();

Reglas profesionales para elegir correctamente

  • Usa List si importa el orden o necesitas índice
  • Usa Set si necesitas unicidad
  • Usa Map si necesitas buscar por clave
  • Programa siempre contra interfaces
  • No abuses de una sola estructura

Errores comunes en entrevistas

  • Usar List cuando debería ser Set
  • Usar Map como lista
  • No saber explicar diferencias
  • No justificar la elección de la colección
  • Confundir HashMap con Hashtable

Conclusión

Elegir correctamente entre List, Set y Map es una habilidad fundamental en Java profesional.
Un buen desarrollador no solo sabe usarlas, sabe cuándo y por qué usarlas.

Si dominas estas colecciones, dominarás:

  • Servicios backend
  • Persistencia
  • APIs REST
  • Lógica empresarial