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 cuArrayList, dar sigur pentru fire (și mai puțin performant).Stack<E>: Clasă învechită, extindeVector, implementează comportamentul de stivă (LIFO).
Set<E>: Colecție ce conține elemente unice.HashSet<E>: Implementare bazată pe tabel hash. Nesortat. Operații rapideadd,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 aDequepe bază de array dinamic. Mai rapid decâtLinkedListpentru 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 rapideput,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 cuHashMap, 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