Sobes.tech
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 a ArrayList.
      • Stack: Sottoclasse di Vector, 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 a HashMap.
      • 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)