Sobes.tech
Junior

Povězte o hierarchii kolekcí v Java.

sobes.tech AI

Odpověď od AI

Hierarchie kolekcí v jazyce Java je postavena kolem dvou hlavních rozhraní: Collection a Map. Je definována v balíčku java.util.

  • Collection<E>: Základní rozhraní pro většinu kolekcí. Představuje skupinu prvků. Nezaručuje pořadí nebo unikátnost prvků.
    • List<E>: Seřazená kolekce (sekvence). Prvky mají pevný index. Může obsahovat duplicitní prvky.
      • ArrayList<E>: Implementace založená na poli. Rychlý náhodný přístup, pomalé vkládání/mazání uprostřed.
      • LinkedList<E>: Implementace založená na spojovaném seznamu. Pomalý náhodný přístup, rychlé vkládání/mazání na začátku a konci.
      • Vector<E>: Zastaralá synchronizovaná třída. Podobná ArrayList, ale vlákny bezpečná (a méně výkonná).
      • Stack<E>: Zastaralá třída rozšiřující Vector, implementuje chování zásobníku (LIFO).
    • Set<E>: Kolekce obsahující unikátní prvky.
      • HashSet<E>: Implementace založená na hash tabulce. Neseřazená. Rychlé operace add, remove, contains.
      • LinkedHashSet<E>: Zachovává pořadí vložení.
      • SortedSet<E>: Seřazená množina.
        • TreeSet<E>: Implementace založená na červené-černé stromě. Zaručuje seřazené pořadí.
    • Queue<E>: Kolekce určená pro uložení prvků před zpracováním, často v FIFO pořadí.
      • PriorityQueue<E>: Implementace fronty s prioritami. Prvky jsou vybírány podle jejich priority.
      • Deque<E>: (Dvoustranná fronta) Dvoustranná fronta. Podporuje operace vkládání a odebírání na obou koncích.
        • ArrayDeque<E>: Implementace Deque založená na dynamickém poli. Rychlejší než LinkedList při použití jako zásobník nebo fronta.
  • Map<K, V>: Objekt, který mapuje klíče na hodnoty. Klíče jsou unikátní, hodnoty mohou být opakovány.
    • HashMap<K, V>: Implementace založená na hash tabulce. Neseřazená. Rychlé operace put, get, remove.
    • LinkedHashMap<K, V>: Zachovává pořadí vložení nebo přístupu.
    • SortedMap<K, V>: Seřazená mapa podle klíčů.
      • TreeMap<K, V>: Implementace založená na červené-černé stromě. Zaručuje seřazené pořadí podle klíčů.
    • Hashtable<K, V>: Zastaralá synchronizovaná třída. Podobná HashMap, ale vlákny bezpečná (a méně výkonná).

Hlavní rozhraní:

Rozhraní Popis Pořadí Unikátnost Duplicity hodnot
Collection Skupina prvků +/- +/- Ano
List Seřazená kolekce Ano Ne Ano
Set Kolekce unikátních prvků +/- Ano Ne
Queue Kolekce pro zpracování (FIFO) Ano Ne Ano
Deque Dvoustranná fronta Ano Ne Ano
Map Mapování klíč-hodnota +/- Podle klíče Ano
SortedSet Seřazená množina Ano Ano Ne
SortedMap Seřazená mapa podle klíčů Ano Podle klíče Ano

Příklad použití:

// Příklad ArrayList
List<String> jména = new ArrayList<>();
jména.add("Alice");
jména.add("Bob");
System.out.println(jména.get(0)); // Alice

// Příklad HashSet
Set<Integer> unikátníČísla = new HashSet<>();
unikátníČísla.add(1);
unikátníČísla.add(2);
unikátníČísla.add(1); // Duplicita ignorována
System.out.println(unikátníČísla.size()); // 2

// Příklad HashMap
Map<String, Integer> věk = new HashMap<>();
věk.put("Alice", 30);
věk.put("Bob", 25);
System.out.println(věk.get("Alice")); // 30