Middle
Descrivi la gerarchia delle collezioni in Java.
sobes.tech AI
Risposta dell'AI
La gerarchia delle collezioni in Java si basa su un insieme di interfacce che forniscono un modo standard per rappresentare gruppi di oggetti.
Interfacce principali:
Collection: interfaccia radice della gerarchia. Definisce le operazioni di base applicabili a tutte le collezioni: aggiunta, rimozione, verifica della presenza di elementi, determinazione della dimensione.Set: collezione che non contiene duplicati e non ha un ordine definito degli elementi.List: collezione ordinata con accesso agli elementi tramite indice. Può contenere duplicati.Queue: collezione destinata a memorizzare elementi prima dell'elaborazione. Di solito segue la regola FIFO (First-In, First-Out), ma ci sono altre implementazioni.Deque: coda a doppia estremità. Supporta l'aggiunta e la rimozione di elementi da entrambe le estremità.Map: collezione che memorizza coppie "chiave-valore". Le chiavi devono essere uniche. Non estende l'interfacciaCollection.
Classi principali che implementano queste interfacce (esempi):
| Interfaccia | Classi che la implementano (esempi) | Descrizione |
|---|---|---|
Set |
HashSet, LinkedHashSet, TreeSet |
Senza duplicati. HashSet - senza ordine, LinkedHashSet - mantiene l'ordine di inserimento, TreeSet - ordinato. |
List |
ArrayList, LinkedList, Vector |
Ordinata. ArrayList - basata su array, LinkedList - basata su lista collegata, Vector - sincronizzata (obsoleta). |
Queue |
LinkedList, PriorityQueue |
Per l'elaborazione. LinkedList - FIFO, PriorityQueue - basata su priorità. |
Deque |
ArrayDeque, LinkedList |
Coda a doppia estremità. ArrayDeque - basata su array, LinkedList - basata su lista collegata. |
Map |
HashMap, LinkedHashMap, TreeMap, Hashtable |
Chiave-valore. HashMap - senza garanzia di ordine, LinkedHashMap - mantiene l'ordine di inserimento/accesso, TreeMap - ordinato per chiavi, Hashtable - sincronizzato (obsoleto). |
Esempio di utilizzo di ArrayList:
// Creazione di un ArrayList di stringhe
List<String> fruits = new ArrayList<>();
// Aggiunta di elementi
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Orange");
// Accesso tramite indice
String firstFruit = fruits.get(0); // Apple
// Dimensione della collezione
int size = fruits.size(); // 3
Esempio di utilizzo di HashSet:
// Creazione di un HashSet di interi
Set<Integer> numbers = new HashSet<>();
// Aggiunta di elementi (i duplicati vengono ignorati)
numbers.add(1);
numbers.add(2);
numbers.add(2); // Ignorato
// Dimensione della collezione
int size = numbers.size(); // 2
Esempio di utilizzo di HashMap:
// Creazione di un HashMap: chiave - String, valore - Integer
Map<String, Integer> ages = new HashMap<>();
// Aggiunta di coppie chiave-valore
ages.put("Alice", 30);
ages.put("Bob", 25);
// Ottenere il valore tramite chiave
int ageAlice = ages.get("Alice"); // 30
// Verificare se la chiave esiste
boolean hasBob = ages.containsKey("Bob"); // true