Junior
Czym różni się List od Set w Java?
sobes.tech AI
Odpowiedź od AI
Główne różnice:
- Kolejność elementów:
Listzachowuje kolejność dodawania elementów.Setnie gwarantuje kolejności elementów (zależy od konkretnej implementacji, np.LinkedHashSetzachowuje kolejność dodawania).
- Duplikaty:
Listpozwala na przechowywanie duplikatów.Setprzechowuje tylko unikalne elementy.
- Dostęp do elementów:
Listumożliwia dostęp do elementów po indeksie.Setnie zapewnia bezpośredniego dostępu do elementów po indeksie, dostęp odbywa się przez iterator lub pętlę.
- Wydajność:
- Operacje wyszukiwania i dodawania w
Listz dużą ilością elementów mogą być wolniejsze niż wSet(np. wHashSet). - Operacje dodawania i usuwania w
Set(np.HashSet) zazwyczaj mają średnią złożoność czasową stałą.
- Operacje wyszukiwania i dodawania w
Przykład:
// Lista pozwalająca na duplikaty i zachowująca kolejność
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Apple");
System.out.println(list); // Wyjście: [Apple, Banana, Apple]
// Zbiór przechowujący tylko unikalne elementy
Set<String> set = new HashSet<>();
set.add("Apple");
set.add("Banana");
set.add("Apple");
System.out.println(set); // Wyjście: [Apple, Banana] (kolejność może się różnić)
Tabela porównawcza:
| Aspekt | List |
Set |
|---|---|---|
| Kolejność | Zachowana | Nie gwarantowana (zależy od implementacji) |
| Duplikaty | Dozwolone | Niedozwolone |
| Dostęp po indeksie | Tak | Nie |
| Interfejs | java.util.List |
java.util.Set |
| Typowe zastosowania | Kolekcje uporządkowane, listy | Unikalne kolekcje, zbiory |