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'.
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:
-
EnumMap(Class
keyType) EnumMap<DaysOfWeek, String> activities = new EnumMap<>(DaysOfWeek.class);
Questo crea un'EnumMap vuota con chiavi del tipo specificato di enum.
-
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).
-
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