Sobes.tech
Junior
387

V čem se liší List od Set v Java?

Odpověď od AI

sobes.tech AI

Hlavní rozdíly:

  1. Pořadí prvků:
    • List zachovává pořadí, ve kterém jsou prvky přidávány.
    • Set nezaručuje pořadí prvků (závisí na konkrétní implementaci, například LinkedHashSet zachovává pořadí vložení).
  2. Duplikáty:
    • List umožňuje ukládání duplicitních prvků.
    • Set ukládá pouze unikátní prvky.
  3. Přístup k prvkům:
    • List umožňuje přístup k prvkům podle indexu.
    • Set neposkytuje přímý přístup k prvkům podle indexu, přístup je přes iterátor nebo cyklus.
  4. Výkon:
    • Operace hledání a přidávání v List s velkým počtem prvků mohou být pomalejší než v Set (například v HashSet).
    • Operace přidávání a mazání v Set (například HashSet) mají obvykle průměrnou konstantní časovou složitost.

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