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é operaceadd,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>: ImplementaceDequezaložená na dynamickém poli. Rychlejší nežLinkedListpř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é operaceput,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