Middle
Popíšte hierarchiu kolekcií v Jave.
sobes.tech AI
Odpoveď od AI
Hierarchia zbierok v Jave je založená na sade rozhraní, ktoré poskytujú štandardný spôsob reprezentácie skupín objektov.
Hlavné rozhrania:
Collection: koreňové rozhranie hierarchie. Definuje základné operácie platné pre všetky zbierky: pridanie, odstránenie, kontrola prítomnosti prvkov, určenie veľkosti.Set: zbierka, ktorá neobsahuje duplicity a nemá stanovené poradie prvkov.List: zoradená zbierka s možnosťou prístupu k prvkom podľa indexu. Môže obsahovať duplicity.Queue: zbierka určená na ukladanie prvkov pred spracovaním. Obvykle nasleduje pravidlo FIFO (First-In, First-Out), ale existujú aj iné implementácie.Deque: obojstranná fronta. Podporuje pridávanie a odstraňovanie prvkov z oboch koncov.Map: zbierka, ktorá uchováva páry "kľúč-hodnota". Kľúče musia byť jedinečné. Nerozširuje rozhranieCollection.
Hlavné implementačné triedy (príklady):
| Rozhranie | Implementačné triedy (príklady) | Popis |
|---|---|---|
Set |
HashSet, LinkedHashSet, TreeSet |
Bez duplicít. HashSet - bez poradia, LinkedHashSet - zachováva poradie pridania, TreeSet - zoradený. |
List |
ArrayList, LinkedList, Vector |
Poreadená. ArrayList - na základe poľa, LinkedList - na základe prepojeného zoznamu, Vector - synchronizovaná (zastaralá). |
Queue |
LinkedList, PriorityQueue |
Na spracovanie. LinkedList - FIFO, PriorityQueue - na základe priorít. |
Deque |
ArrayDeque, LinkedList |
Obojstranná fronta. ArrayDeque - na základe poľa, LinkedList - na základe prepojeného zoznamu. |
Map |
HashMap, LinkedHashMap, TreeMap, Hashtable |
Kľúč-hodnota. HashMap - bez garantovaného poradia, LinkedHashMap - zachováva poradie pridania/prístupu, TreeMap - zoradený podľa kľúčov, Hashtable - synchronizovaná (zastaralá). |
Príklad použitia ArrayList:
// Vytvorenie ArrayListu reťazcov
List<String> fruits = new ArrayList<>();
// Pridanie prvkov
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Orange");
// Prístup podľa indexu
String firstFruit = fruits.get(0); // Apple
// Veľkosť kolekcie
int size = fruits.size(); // 3
Príklad použitia HashSet:
// Vytvorenie HashSetu celých čísel
Set<Integer> numbers = new HashSet<>();
// Pridanie prvkov (duplicitné sa ignorujú)
numbers.add(1);
numbers.add(2);
numbers.add(2); // Ignorované
// Veľkosť kolekcie
int size = numbers.size(); // 2
Príklad použitia HashMap:
// Vytvorenie HashMap: kľúč - String, hodnota - Integer
Map<String, Integer> ages = new HashMap<>();
// Pridanie párov kľúč-hodnota
ages.put("Alice", 30);
ages.put("Bob", 25);
// Získanie hodnoty podľa kľúča
int aliceAge = ages.get("Alice"); // 30
// Kontrola existencie kľúča
boolean hasBob = ages.containsKey("Bob"); // pravda