Sobes.tech
Junior

Parla della collezione Map in Java e delle sue caratteristiche.

sobes.tech AI

Risposta dell'AI

Map — è un'interfaccia nel Java Collection Framework che rappresenta una collezione di coppie "chiave-valore". Le chiavi sono uniche, mentre i valori possono ripetersi.

Caratteristiche principali:

  • La chiave viene usata per accedere al valore corrispondente.
  • La stessa chiave non può essere aggiunta due volte. Quando si tenta di aggiungere una chiave esistente, il valore vecchio viene sostituito con quello nuovo.
  • Map non eredita dall'interfaccia Collection. Ha i propri metodi per lavorare con le coppie "chiave-valore".
  • L'ordine delle coppie "chiave-valore" può variare a seconda dell'implementazione specifica.

Implementazioni popolari di Map:

  • HashMap: Non garantisce l'ordine degli elementi. Offre alte prestazioni per la maggior parte delle operazioni (inserimento, recupero, rimozione) in assenza di conflitti di hash.
  • LinkedHashMap: Memorizza gli elementi nell'ordine di inserimento (o nell'ordine di accesso, se configurato di conseguenza).
  • TreeMap: Memorizza gli elementi in ordine ordinato secondo la chiave (ordine naturale o fornito da un comparatore). Offre tempi logaritmici per la maggior parte delle operazioni.

Esempi di metodi:

// Ottenere il valore tramite la chiave
Object value = map.get(key);

// Aggiungere o aggiornare una coppia chiave-valore
Object oldValue = map.put(key, value);

// Rimuovere una coppia tramite la chiave
Object removedValue = map.remove(key);

// Verificare se una chiave esiste
boolean containsKey = map.containsKey(key);

// Verificare se un valore esiste
boolean containsValue = map.containsValue(value);

// Ottenere l'insieme di tutte le chiavi
Set<KeyType> keys = map.keySet();

// Ottenere l'insieme di tutti i valori
Collection<ValueType> values = map.values();

// Ottenere l'insieme di tutte le entries (coppie chiave-valore)
Set<Map.Entry<KeyType, ValueType>> entries = map.entrySet();

// Ottenere la dimensione di `Map`
int size = map.size();

Utilizzo di Map.Entry durante l'iterazione:

// Iterare sull'insieme di Entry
for (Map.Entry<KeyType, ValueType> entry : map.entrySet()) {
    KeyType key = entry.getKey();
    ValueType value = entry.getValue();
    // ...
}