Sobes.tech
Junior

Qual é a diferença entre List e Set em Java?

sobes.tech IA

Resposta da IA

Diferenças principais:

  1. Ordem dos elementos:
    • List mantém a ordem de adição dos elementos.
    • Set não garante a ordem dos elementos (depende da implementação específica, por exemplo, LinkedHashSet mantém a ordem de inserção).
  2. Duplicados:
    • List permite armazenar elementos duplicados.
    • Set armazena apenas elementos únicos.
  3. Acesso aos elementos:
    • List fornece acesso aos elementos por índice.
    • Set não fornece acesso direto aos elementos por índice, o acesso é feito através de iterador ou varredura.
  4. Desempenho:
    • Operações de busca e adição em List com muitos elementos podem ser mais lentas do que em Set (por exemplo, em HashSet).
    • Operações de adição e remoção em Set (por exemplo, HashSet) geralmente têm complexidade de tempo média constante.

Exemplo:

// Lista que permite duplicados e mantém a ordem
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Apple");
System.out.println(list); // Saída: [Apple, Banana, Apple]

// Conjunto que armazena apenas elementos únicos
Set<String> set = new HashSet<>();
set.add("Apple");
set.add("Banana");
set.add("Apple");
System.out.println(set); // Saída: [Apple, Banana] (a ordem pode variar)

Tabela comparativa:

Aspeto List Set
Ordem Mantém Não garantido (depende da implementação)
Duplicados Permitidos Não permitidos
Acesso por índice Sim Não
Interface java.util.List java.util.Set
Uso típico Coleções ordenadas, listas Coleções únicas, conjuntos