Guida All'uso Della Classe EnumMap Di Java: Per Principianti

Introduzione

Ciao, futuri programmatori Java! Oggi, inizieremo un viaggio entusiasmante nel mondo della classe EnumMap di Java. So cosa potreste pensare: "EnumMap? Sembra complicato!" Ma non preoccupatevi! Alla fine di questa guida, userete le EnumMap come professionisti e potreste anche divertirvi un po'.

Java - EnumMap

Iniziamo con un'analogia semplice. Immagina di avere una cassettiera speciale per ogni giorno della settimana per organizzare le tue calze. Questo è essenzialmente cosa è un'EnumMap: un modo per organizzare dati usando costanti enum come chiavi. Bello, no? Diamo un'occhiata!

Dichiarazione Della Classe

Prima di tutto, vediamo come dichiarare un'EnumMap:

import java.util.EnumMap;

enum DaysOfWeek { LUNEDÌ, MARTEDÌ, MERCOLEDÌ, GIOVEDÌ, VENERDÌ, SABATO, DOMENICA }

EnumMap<DaysOfWeek, String> activities = new EnumMap<>(DaysOfWeek.class);

In questo esempio, stiamo creando un'EnumMap che utilizza il nostro DaysOfWeek enum come chiavi e valori String per memorizzare attività. La parte DaysOfWeek.class dice a Java quale enum stiamo usando per le nostre chiavi.

Costruttori Della Classe

EnumMap ha tre costruttori. Analizziamoli uno per uno:

  1. EnumMap(Class keyType)

    EnumMap<DaysOfWeek, String> activities = new EnumMap<>(DaysOfWeek.class);

    Questo crea un'EnumMap vuota con chiavi del tipo specificato di enum.

  2. EnumMap(EnumMap<K,? extends V> m)

    EnumMap<DaysOfWeek, String> activitiesCopy = new EnumMap<>(activities);

    Questo crea un'EnumMap con lo stesso tipo di chiave dell'EnumMap specificato e lo inizializza con le stesse mappature (se presenti).

  3. EnumMap(Map<K,? extends V> m)

    Map<DaysOfWeek, String> regularMap = new HashMap<>();
    regularMap.put(DaysOfWeek.LUNEDÌ, "Palestra");
    EnumMap<DaysOfWeek, String> activitiesFromMap = new EnumMap<>(regularMap);

    Questo crea un'EnumMap inizializzato da una mappa regolare.

Metodi Della Classe

Ora, analizziamo alcuni dei metodi più comuni di EnumMap:

Metodo Descrizione
put(K key, V value) Associa il valore specificato alla chiave specificata
get(Object key) Restituisce il valore associato alla chiave specificata
remove(Object key) Rimuove la mappatura per questa chiave se presente
size() Restituisce il numero di mappature chiave-valore
clear() Rimuove tutte le mappature da questa mappa
containsKey(Object key) Restituisce true se questa mappa contiene una mappatura per la chiave specificata
containsValue(Object value) Restituisce true se questa mappa mappa una o più chiavi al valore specificato

Vediamo questi metodi in azione:

EnumMap<DaysOfWeek, String> activities = new EnumMap<>(DaysOfWeek.class);

// Aggiunta di coppie chiave-valore
activities.put(DaysOfWeek.LUNEDÌ, "Palestra");
activities.put(DaysOfWeek.MARTEDÌ, "Cinema");

// Ottenere un valore
String mondayActivity = activities.get(DaysOfWeek.LUNEDÌ);
System.out.println("Attività del lunedì: " + mondayActivity);

// Controllare se una chiave esiste
boolean hasWednesday = activities.containsKey(DaysOfWeek.MERCOLEDÌ);
System.out.println("Ha mercoledì: " + hasWednesday);

// Rimozione di una coppia chiave-valore
activities.remove(DaysOfWeek.MARTEDÌ);

// Ottenere la dimensione
int size = activities.size();
System.out.println("Numero di attività: " + size);

// Pulizia della mappa
activities.clear();

In questo esempio, stiamo aggiungendo attività per giorni diversi, recuperando valori, controllando le chiavi, rimuovendo le voci e infine pulendo l'intera mappa. È come organizzare e riorganizzare la nostra cassettiera delle calze!

Metodi Ereditati

EnumMap eredita metodi dalle sue classi genitrici. Ecco alcuni utili:

Metodo Ereditato Da Descrizione
clone() AbstractMap Crea una copia superficiale di questa mappa
equals(Object o) AbstractMap Confronta l'oggetto specificato con questa mappa per uguaglianza
hashCode() AbstractMap Restituisce il valore del codice hash per questa mappa
toString() AbstractMap Restituisce una rappresentazione stringa di questa mappa

Aggiunta Di Una Chiave-Valore A Un'EnumMap Di Coppia Enum, Integer Esempio

Ora, proviamo qualcosa di un po' più complesso. Creeremo un'EnumMap che utilizza un enum come chiavi e interi come valori:

enum Fruit { MELA, BANANA, ARANCIO, MANGO }

EnumMap<Fruit, Integer> fruitPrices = new EnumMap<>(Fruit.class);

// Aggiunta di coppie chiave-valore
fruitPrices.put(Fruit.MELA, 100);
fruitPrices.put(Fruit.BANANA, 80);
fruitPrices.put(Fruit.ARANCIO, 120);
fruitPrices.put(Fruit.MANGO, 150);

// Stampa dell'EnumMap
System.out.println("Prezzi dei Frutti: " + fruitPrices);

// Aggiornamento di un valore
fruitPrices.put(Fruit.BANANA, 90);

// Ottenere un valore specifico
int applePrice = fruitPrices.get(Fruit.MELA);
System.out.println("Prezzo della Mela: " + applePrice);

// Iterazione sull'EnumMap
for (Map.Entry<Fruit, Integer> entry : fruitPrices.entrySet()) {
System.out.println(entry.getKey() + ": €" + entry.getValue());
}

In questo esempio, stiamo creando un elenco dei prezzi dei frutti. Aggiungiamo prezzi per frutti diversi, aggiorniamo il prezzo delle banane, recuperiamo il prezzo delle mele e infine iteriamo su tutta la mappa per stampare tutti i prezzi dei frutti.

E qui avete tutto! Avete appena imparato la base della classe EnumMap di Java. Ricordate, la pratica fa il maestro, quindi non esitate a sperimentare con questi concetti. Chi lo sa? Potreste proprio finire per organizzare tutta la vostra vita con le EnumMap! (Stavo scherzando, ma sono davvero utili.)

Buon coding, e che le vostre EnumMap siano sempre ben organizzate!

Credits: Image by storyset