Junior
Qual é a diferença entre List e Set em Java?
sobes.tech IA
Resposta da IA
Diferenças principais:
- Ordem dos elementos:
Listmantém a ordem de adição dos elementos.Setnão garante a ordem dos elementos (depende da implementação específica, por exemplo,LinkedHashSetmantém a ordem de inserção).
- Duplicados:
Listpermite armazenar elementos duplicados.Setarmazena apenas elementos únicos.
- Acesso aos elementos:
Listfornece acesso aos elementos por índice.Setnão fornece acesso direto aos elementos por índice, o acesso é feito através de iterador ou varredura.
- Desempenho:
- Operações de busca e adição em
Listcom muitos elementos podem ser mais lentas do que emSet(por exemplo, emHashSet). - Operações de adição e remoção em
Set(por exemplo,HashSet) geralmente têm complexidade de tempo média constante.
- Operações de busca e adição em
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 |