Sobes.tech
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 rozhranie Collection.

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