Sobes.tech
Junior

Vorbește despre ierarhia colecțiilor în Java.

sobes.tech AI

Răspuns de la AI

Ierarhia colecțiilor în Java este construită în jurul a două interfețe principale: Collection și Map. Este definită în pachetul java.util.

  • Collection<E>: Interfața de bază pentru majoritatea colecțiilor. Reprezintă un grup de elemente. Nu garantează ordinea sau unicitatea elementelor.
    • List<E>: O colecție ordonată (secvență). Elementele au un index definit. Poate conține duplicate.
      • ArrayList<E>: Implementare bazată pe array. Acces aleatoriu rapid, inserții/ștergeri lente în mijloc.
      • LinkedList<E>: Implementare bazată pe listă legată. Acces aleatoriu lent, inserții/ștergeri rapide la început/sfârșit.
      • Vector<E>: Clasă sincronizată învechită. Similar cu ArrayList, dar sigur pentru fire (și mai puțin performant).
      • Stack<E>: Clasă învechită, extinde Vector, implementează comportamentul de stivă (LIFO).
    • Set<E>: Colecție ce conține elemente unice.
      • HashSet<E>: Implementare bazată pe tabel hash. Nesortat. Operații rapide add, remove, contains.
      • LinkedHashSet<E>: Menține ordinea inserției.
      • SortedSet<E>: Un set sortat.
        • TreeSet<E>: Implementare bazată pe arbore roșu-negru. Garantează ordinea sortată.
    • Queue<E>: Colecție destinată stocării elementelor înainte de procesare, adesea în ordine FIFO.
      • PriorityQueue<E>: Implementare a cozii cu priorități. Elemente extrase conform priorității.
      • Deque<E>: (Coada dublu sfârșit) Coada bidirecțională. Suportă operații de inserare și extragere de la ambele capete.
        • ArrayDeque<E>: Implementare a Deque pe bază de array dinamic. Mai rapid decât LinkedList pentru utilizare ca stivă sau coadă.
  • Map<K, V>: Obiect care mapează chei la valori. Cheile sunt unice, valorile pot fi repetate.
    • HashMap<K, V>: Implementare bazată pe tabel hash. Nesortat. Operații rapide put, get, remove.
    • LinkedHashMap<K, V>: Menține ordinea inserției sau a accesului.
    • SortedMap<K, V>: Hartă sortată după chei.
      • TreeMap<K, V>: Implementare bazată pe arbore roșu-negru. Garantează ordinea sortată după chei.
    • Hashtable<K, V>: Clasă sincronizată învechită. Similar cu HashMap, dar sigur pentru fire (și mai puțin performant).

Interfețe principale:

Interfață Descriere Ordine Unicitate Dubluri de valori
Collection Grup de elemente +/- +/- Da
List Colecție ordonată Da Nu Da
Set Colecție de elemente unice +/- Da Nu
Queue Colecție pentru procesare (FIFO) Da Nu Da
Deque Coada dublu sfârșit Da Nu Da
Map Mapare cheie-valoare +/- Pe cheie Da
SortedSet Set sortat Da Da Nu
SortedMap Hartă sortată după chei Da Pe cheie Da

Exemplu de utilizare:

// Exemplu de ArrayList
List<String> nume = new ArrayList<>();
nume.add("Alice");
nume.add("Bob");
System.out.println(nume.get(0)); // Alice

// Exemplu de HashSet
Set<Integer> numereUnice = new HashSet<>();
numereUnice.add(1);
numereUnice.add(2);
numereUnice.add(1); // Dublura ignorată
System.out.println(numereUnice.size()); // 2

// Exemplu de HashMap
Map<String, Integer> varste = new HashMap<>();
varste.put("Alice", 30);
varste.put("Bob", 25);
System.out.println(varste.get("Alice")); // 30