Junior
Quali sono le implementazioni delle collezioni nel linguaggio di programmazione Java?
sobes.tech AI
Risposta dell'AI
-
Interfacce:
Collection: Interfaccia di base per tutte le collezioni.List: Collezione ordinata (con indici).Set: Collezione senza duplicati.SortedSet: Collezione senza duplicati, i cui elementi sono ordinati.Map: Array associativo (chiave-valore).SortedMap: Array associativo ordinato per chiavi.Queue: Collezione per memorizzare elementi prima della loro elaborazione.Deque: Coda a doppia estremità.
-
Classi (principali implementazioni):
-
Per
List:ArrayList: Array dinamico. Accesso rapido tramite indice, operazioni di inserimento/eliminazione lente nel mezzo.LinkedList: Lista doppiamente collegata. Accesso lento tramite indice, operazioni rapide di inserimento/eliminazione nel mezzo.Vector: Obsoleto, sincronizzato, equivalente aArrayList.Stack: Sottoclasse diVector, implementa uno stack (LIFO).
-
Per
Set:HashSet: Implementazione basata su tabella hash. Non garantisce l'ordine.LinkedHashSet: Basato su tabella hash e lista collegata. Mantiene l'ordine di inserimento.TreeSet: Basato su albero rosso-nero. Elementi ordinati in ordine crescente.
-
Per
Map:HashMap: Basato su tabella hash. Non garantisce l'ordine delle coppie chiave-valore.Hashtable: Obsoleto, sincronizzato, equivalente aHashMap.LinkedHashMap: Basato su tabella hash e lista collegata. Mantiene l'ordine di inserimento.TreeMap: Basato su albero rosso-nero. Coppie ordinate per chiave.
-
Per
Queue:PriorityQueue: Coda di priorità. Gli elementi vengono estratti in ordine naturale o tramite comparatore.ArrayDeque: Implementazione di coda a doppia estremità basata su array.
-
-
Utilità:
Collections: Metodi statici per lavorare con le collezioni (ordinamento, ricerca, sincronizzazione, ecc.).
// Esempio di utilizzo di ArrayList
List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
System.out.println(names.get(0)); // Alice
// Esempio di utilizzo di HashSet
Set<Integer> numbers = new HashSet<>();
numbers.add(1);
numbers.add(2);
numbers.add(1); // Il duplicato non verrà aggiunto
System.out.println(numbers.size()); // 2
// Esempio di utilizzo di HashMap
Map<String, Integer> ages = new HashMap<>();
ages.put("Alice", 30);
ages.put("Bob", 25);
System.out.println(ages.get("Alice")); // 30
// Esempio di utilizzo di PriorityQueue
Queue<Integer> priorityQueue = new PriorityQueue<>();
priorityQueue.add(3);
priorityQueue.add(1);
priorityQueue.add(2);
System.out.println(priorityQueue.poll()); // 1 (il più basso)