Junior
387
V čem se liší List od Set v Java?
Odpověď od AI
sobes.tech AI
Hlavní rozdíly:
- Pořadí prvků:
Listzachovává pořadí, ve kterém jsou prvky přidávány.Setnezaručuje pořadí prvků (závisí na konkrétní implementaci, napříkladLinkedHashSetzachovává pořadí vložení).
- Duplikáty:
Listumožňuje ukládání duplicitních prvků.Setukládá pouze unikátní prvky.
- Přístup k prvkům:
Listumožňuje přístup k prvkům podle indexu.Setneposkytuje přímý přístup k prvkům podle indexu, přístup je přes iterátor nebo cyklus.
- Výkon:
- Operace hledání a přidávání v
Lists velkým počtem prvků mohou být pomalejší než vSet(například vHashSet). - Operace přidávání a mazání v
Set(napříkladHashSet) mají obvykle průměrnou konstantní časovou složitost.
- Operace hledání a přidávání v
Příklad:
// Seznam, který umožňuje duplicitní prvky a zachovává pořadí
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Apple");
System.out.println(list); // Výstup: [Apple, Banana, Apple]
// Množina, která obsahuje pouze unikátní prvky
Set<String> set = new HashSet<>();
set.add("Apple");
set.add("Banana");
set.add("Apple");
System.out.println(set); // Výstup: [Apple, Banana] (pořadí se může lišit)
Srovnávací tabulka:
| Aspekt | List |
Set |
|---|---|---|
| Pořadí | Zachovává se | Není garantováno (závisí na implementaci) |
| Duplicitní prvky | Povolené | Nepovolené |
| Přístup podle indexu | Ano | Ne |
| Rozhraní | java.util.List |
java.util.Set |
| Typické použití | Uspořádané kolekce, seznamy | Unikátní kolekce, množiny |