Sobes.tech
Junior

¿En qué se diferencia List de Set en Java?

sobes.tech AI

Respuesta de la IA

Diferencias principales:

  1. Orden de los elementos:
    • List mantiene el orden en que se añaden los elementos.
    • Set no garantiza el orden de los elementos (depende de la implementación concreta, por ejemplo, LinkedHashSet mantiene el orden de inserción).
  2. Duplicados:
    • List permite almacenar elementos duplicados.
    • Set solo almacena elementos únicos.
  3. Acceso a los elementos:
    • List permite acceder a los elementos por índice.
    • Set no proporciona acceso directo a los elementos por índice, el acceso se realiza mediante iterador o recorrido.
  4. Rendimiento:
    • Las operaciones de búsqueda y adición en List con muchos elementos pueden ser más lentas que en Set (por ejemplo, en HashSet).
    • Las operaciones de adición y eliminación en Set (por ejemplo, HashSet) suelen tener una complejidad temporal promedio constante.

Ejemplo:

// Lista que permite duplicados y mantiene el orden
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Apple");
System.out.println(list); // Salida: [Apple, Banana, Apple]

// Conjunto que solo almacena elementos únicos
Set<String> set = new HashSet<>();
set.add("Apple");
set.add("Banana");
set.add("Apple");
System.out.println(set); // Salida: [Apple, Banana] (el orden puede variar)

Tabla comparativa:

Aspecto List Set
Orden Se mantiene No garantizado (depende de la implementación)
Duplicados Se permiten No se permiten
Acceso por índice No
Interfaz java.util.List java.util.Set
Uso típico Colecciones ordenadas, listas Colecciones únicas, conjuntos