Sobes.tech
Junior

Povedzte o hierarchii kolekcií v Jave.

sobes.tech AI

Odpoveď od AI

Hierarchia kolekcií v Jave je postavená okolo dvoch koreňových rozhraní: Collection a Map. Je definovaná v balíku java.util.

  • Collection<E>: Koreňové rozhranie pre väčšinu kolekcií. Predstavuje skupinu prvkov. Nezaručuje poradie alebo jedinečnosť prvkov.
    • List<E>: Usporiadaná kolekcia (sekvencia). Prvky majú určený index. Môžu obsahovať duplikáty.
      • ArrayList<E>: Implementácia na základe poľa. Rýchly náhodný prístup, pomalé vkladanie/odstraňovanie uprostred.
      • LinkedList<E>: Implementácia na základe prepojeného zoznamu. Pomalý náhodný prístup, rýchle vkladanie/odstraňovanie na začiatku/konci.
      • Vector<E>: Zastaralá synchronizovaná trieda. Podobná ArrayList, ale vlákno-bezpečná (a menej výkonná).
      • Stack<E>: Zastaralá trieda, rozširujúca Vector, implementuje správanie zásobníka (LIFO).
    • Set<E>: Kolekcia obsahujúca jedinečné prvky.
      • HashSet<E>: Implementácia na základe hash tabuľky. Neusporiadané. Rýchle operácie add, remove, contains.
      • LinkedHashSet<E>: Udržiava poradie vkladania.
      • SortedSet<E>: Množina, zoradená vzostupne.
        • TreeSet<E>: Implementácia na základe červeno-čierneho stromu. Zaručuje zoradené poradie.
    • Queue<E>: Kolekcia určená na ukladanie prvkov pred spracovaním, často v poriadku FIFO (First-In, First-Out).
      • PriorityQueue<E>: Implementácia fronty s prioritami. Prvky sa odstraňujú podľa ich priority.
      • Deque<E>: (Dvojitá koncová fronta) Dvojstranná fronta. Podporuje operácie vkladania a odstraňovania z oboch koncov.
        • ArrayDeque<E>: Implementácia Deque na základe dynamického poľa. Rýchlejšia ako LinkedList pri použití ako zásobník alebo fronta.
  • Map<K, V>: Objekt, ktorý mapuje kľúče na hodnoty. Kľúče sú jedinečné, hodnoty môžu sa opakovať.
    • HashMap<K, V>: Implementácia na základe hash tabuľky. Neusporiadané. Rýchle operácie put, get, remove.
    • LinkedHashMap<K, V>: Udržiava poradie vkladania alebo prístupu.
    • SortedMap<K, V>: Mapa zoradená podľa kľúčov.
      • TreeMap<K, V>: Implementácia na základe červeno-čierneho stromu. Zaručuje zoradené poradie podľa kľúčov.
    • Hashtable<K, V>: Zastaralá synchronizovaná trieda. Podobná HashMap, ale vlákno-bezpečná (a menej výkonná).

Hlavné rozhrania:

Rozhranie Popis Poradie Jedinečnosť Duplikáty hodnôt
Collection Skupina prvkov +/- +/- Áno
List Usporiadaná kolekcia Áno Nie Áno
Set Kolekcia jedinečných prvkov +/- Áno Nie
Queue Kolekcia na spracovanie (FIFO) Áno Nie Áno
Deque Dvojstranná fronta Áno Nie Áno
Map Kľúč-hodnota +/- Podľa kľúča Áno
SortedSet Zoradená množina Áno Áno Nie
SortedMap Mapa zoradená podľa kľúčov Áno Podľa kľúča Áno

Príklad použitia:

// Príklad použitia ArrayList
List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
System.out.println(names.get(0)); // Alice

// Príklad použitia HashSet
Set<Integer> uniqueNumbers = new HashSet<>();
uniqueNumbers.add(1);
uniqueNumbers.add(2);
uniqueNumbers.add(1); // Duplikát je ignorovaný
System.out.println(uniqueNumbers.size()); // 2

// Príklad použitia HashMap
Map<String, Integer> ages = new HashMap<>();
ages.put("Alice", 30);
ages.put("Bob", 25);
System.out.println(ages.get("Alice")); // 30