Junior
V čom sa líši List od Set v Jave?
sobes.tech AI
Odpoveď od AI
Hlavné rozdiely:
- Poradie prvkov:
Listzachováva poradie, v akom boli prvky pridané.Setnezaručuje poradie prvkov (závisí od konkrétnej implementácie, napríkladLinkedHashSetzachováva poradie vloženia).
- Duplicitné prvky:
Listumožňuje uloženie duplicitných prvkov.Setuchováva iba jedinečné prvky.
- Prístup k prvkom:
Listumožňuje prístup k prvkom podľa indexu.Setneposkytuje priame prístup k prvkom podľa indexu, prístup sa vykonáva cez iterátor alebo cyklus.
- Výkon:
- Operácie vyhľadávania a pridávania v
Lists veľkým počtom prvkov môžu byť pomalšie ako vSet(napríklad vHashSet). - Operácie pridávania a odstraňovania v
Set(napríkladHashSet) majú zvyčajne priemernú konštantnú časovú zložitosť.
- Operácie vyhľadávania a pridávania v
Príklad:
// Zoznam, ktorý umožňuje duplicitné prvky a zachováva poradie
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, ktorá obsahuje iba jedinečné prvky
Set<String> set = new HashSet<>();
set.add("Apple");
set.add("Banana");
set.add("Apple");
System.out.println(set); // Výstup: [Apple, Banana] (poradie sa môže líšiť)
Porovnávacia tabuľka:
| Aspekt | List |
Set |
|---|---|---|
| Poradie | Zachováva sa | Nie je garantované (závisí od implementácie) |
| Duplicitné prvky | Povolené | Nie sú povolené |
| Prístup podľa indexu | Áno | Nie |
| Rozhranie | java.util.List |
java.util.Set |
| Typické použitie | Usporiadané kolekcie, zoznamy | Unikátne kolekcie, množiny |