Java EnumMap Klasse: Ein Anfänger-Leitfaden

Einführung

Hallo daar, zukünftige Java-Programmierer! Heute werden wir eine aufregende Reise in die Welt der Java-EnumMap-Klasse antreten. Ich weiß, was Sie vielleicht denken: "EnumMap? Das klingt kompliziert!" Aber keine Sorge! Am Ende dieses Tutorials werden Sie EnumMaps wie ein Profi verwenden, und Sie könnten sogar ein bisschen Spaß dabei haben.

Java - EnumMap

Lassen Sie uns mit einer einfachen Analogie beginnen. Stellen Sie sich vor, Sie haben einen speziellen Schubladen für jeden Wochentag, um Ihre Socken zu organisieren. Das ist im Grunde genommen, was eine EnumMap ist – eine Möglichkeit, Daten mit Enum-Konstanten als Schlüssel zu organisieren. Cool, nicht wahr? Lassen Sie uns reinplündern!

Klassendeklaration

Zuerst einmal, schauen wir uns an, wie wir eine EnumMap deklarieren:

import java.util.EnumMap;

enum DaysOfWeek { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }

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

In diesem Beispiel erstellen wir eine EnumMap, die unsere DaysOfWeek-Enum als Schlüssel und String-Werte zur Speicherung von Aktivitäten verwendet. Der Teil DaysOfWeek.class teilt Java mit, welche Enum wir für unsere Schlüssel verwenden.

Klassenkonstruktoren

EnumMap hat drei Konstruktoren. Schauen wir uns jeden an:

  1. EnumMap(Class keyType)

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

    Dies erstellt eine leere EnumMap mit Schlüsseln des angegebenen Enum-Typs.

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

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

    Dies erstellt eine EnumMap mit dem gleichen Schlüsseltyp wie die angegebene EnumMap und initialisiert sie mit den gleichen Zuordnungen (falls vorhanden).

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

    Map<DaysOfWeek, String> regularMap = new HashMap<>();
    regularMap.put(DaysOfWeek.MONDAY, "Gym");
    EnumMap<DaysOfWeek, String> activitiesFromMap = new EnumMap<>(regularMap);

    Dies erstellt eine EnumMap, die aus einer regulären Map initialisiert wird.

Klassenmethoden

Nun schauen wir uns einige der am häufigsten verwendeten Methoden in EnumMap an:

Methode Beschreibung
put(K key, V value) Verknüpft den angegebenen Wert mit dem angegebenen Schlüssel
get(Object key) Liefert den Wert zurück, der mit dem angegebenen Schlüssel verbunden ist
remove(Object key) Entfernt die Zuordnung für diesen Schlüssel, falls vorhanden
size() Liefert die Anzahl der Schlüssel-Wert-Zuordnungen
clear() Entfernt alle Zuordnungen aus dieser Map
containsKey(Object key) Liefert true zurück, wenn diese Map eine Zuordnung für den angegebenen Schlüssel enthält
containsValue(Object value) Liefert true zurück, wenn diese Map einen oder mehrere Schlüssel auf den angegebenen Wert abbildet

Sehen wir uns diese Methoden in Aktion an:

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

// Hinzufügen von Schlüssel-Wert-Paaren
activities.put(DaysOfWeek.MONDAY, "Gym");
activities.put(DaysOfWeek.TUESDAY, "Kino");

// Abrufen eines Wertes
String montagAktivitaet = activities.get(DaysOfWeek.MONDAY);
System.out.println("Aktivität am Montag: " + montagAktivitaet);

// Überprüfen, ob ein Schlüssel existiert
boolean hatMittwoch = activities.containsKey(DaysOfWeek.WEDNESDAY);
System.out.println("Hat Mittwoch: " + hatMittwoch);

// Entfernen eines Schlüssel-Wert-Paares
activities.remove(DaysOfWeek.TUESDAY);

// Abrufen der Größe
int groesse = activities.size();
System.out.println("Anzahl der Aktivitäten: " + groesse);

// Leeren der Map
activities.clear();

In diesem Beispiel fügen wir Aktivitäten für verschiedene Tage hinzu, holen Werte ab, überprüfen auf Schlüssel, entfernen Einträge und leeren schließlich die gesamte Map. Es ist wie die Organisation und Neugestaltung unseres Sockenschubladens!

Vererbte Methoden

EnumMap erbt Methoden von ihren Elternklassen. Hier sind einige nützliche:

Methode Vererbt Von Beschreibung
clone() AbstractMap Erstellt eine flache Kopie dieser Map
equals(Object o) AbstractMap Vergleicht das angegebene Objekt mit dieser Map auf Gleichheit
hashCode() AbstractMap Liefert den Hashcode-Wert für diese Map
toString() AbstractMap Liefert eine Zeichenkettendarstellung dieser Map

Hinzufügen eines Schlüssel-Wert-Paares zu einer EnumMap von Enum, Integer-Paar-Beispiel

Nun probieren wir etwas komplexeres. Wir erstellen eine EnumMap, die eine Enum als Schlüssel und Ganzzahlen als Werte verwendet:

enum Fruit { APPLE, BANANA, ORANGE, MANGO }

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

// Hinzufügen von Schlüssel-Wert-Paaren
fruitPrices.put(Fruit.APPLE, 100);
fruitPrices.put(Fruit.BANANA, 80);
fruitPrices.put(Fruit.ORANGE, 120);
fruitPrices.put(Fruit.MANGO, 150);

// Ausgabe der EnumMap
System.out.println("Frucht Preise: " + fruitPrices);

// Aktualisieren eines Wertes
fruitPrices.put(Fruit.BANANA, 90);

// Abrufen eines spezifischen Wertes
int apfelPreis = fruitPrices.get(Fruit.APPLE);
System.out.println("Preis von Apfel: " + apfelPreis);

// Iteration über die EnumMap
for (Map.Entry<Fruit, Integer> entry : fruitPrices.entrySet()) {
System.out.println(entry.getKey() + ": $" + entry.getValue());
}

In diesem Beispiel erstellen wir eine Preisliste für Früchte. Wir fügen Preise für verschiedene Früchte hinzu, aktualisieren den Preis von Bananen, holen den Preis von Äpfeln ab und iterieren dann über die gesamte Map, um alle Fruchtpreise auszugeben.

Und so ist es! Sie haben gerade die Grundlagen der Java-EnumMap-Klasse gelernt. Denken Sie daran, dass Praxis Makes Perfect ist, also experimentieren Sie nicht scheuen mit diesen Konzepten. Wer weiß? Sie könnten sich herausfinden, Ihr ganzes Leben mit EnumMaps zu organisieren! (Nur scherzhaft, aber sie sind ziemlich nützlich.)

Happy coding, und möge Ihre EnumMaps immer gut organisiert sein!

Credits: Image by storyset