Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Java

Java EnumMap meistern: Effizientes Key-Value-Mapping mit Enums

Java EnumMap

In diesem Tutorial lernen wir die Java EnumMap-Klasse und ihre Operationen anhand von Beispielen kennen.

Die EnumMap-Klasse des Java Collections Framework stellt eine Map-Implementierung für Elemente eines Enums bereit.

In EnumMap werden Enum-Elemente als Schlüssel verwendet. Sie implementiert das Map-Interface.

Java EnumMap meistern: Effizientes Key-Value-Mapping mit Enums

Bevor wir über EnumMap lernen, stellen Sie sicher, dass Sie über Java Enums Bescheid wissen.


EnumMap erstellen

Um eine Enum Map zu erstellen, müssen wir zuerst das java.util.EnumMap-Paket importieren. Nach dem Import können wir Enum Maps in Java wie folgt erstellen.

 enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE } EnumMap<Size, Integer> sizes = new EnumMap<>(Size.class); 

Im obigen Beispiel haben wir eine Enum Map namens sizes erstellt.

Hier:


Methoden von EnumMap

Die EnumMap-Klasse stellt Methoden bereit, die es uns ermöglichen, verschiedene Operationen auf Enum Maps durchzuführen.


Elemente in EnumMap einfügen

Zum Beispiel,

 import java.util.EnumMap; class Main { enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE } public static void main(String[] args) { // Erstellen einer EnumMap des Size Enums EnumMap<Size, Integer> sizes1 = new EnumMap<>(Size.class); // Verwenden der put() Methode sizes1.put(Size.SMALL, 28); sizes1.put(Size.MEDIUM, 32); System.out.println("EnumMap1: " + sizes1); EnumMap<Size, Integer> sizes2 = new EnumMap<>(Size.class); // Verwenden der putAll() Methode sizes2.putAll(sizes1); sizes2.put(Size.LARGE, 36); System.out.println("EnumMap2: " + sizes2); } } 

Ausgabe

 EnumMap1: {SMALL=28, MEDIUM=32} EnumMap2: {SMALL=28, MEDIUM=32, LARGE=36} 

Im obigen Beispiel haben wir die putAll() Methode verwendet, um alle Elemente der Enum Map sizes1 in eine Enum Map von sizes2 einzufügen.

Es ist auch möglich, Elemente aus anderen Maps wie HashMap, TreeMap, etc. in eine Enum Map einzufügen mittels putAll(). Allerdings sollten alle Maps vom gleichen Enum-Typ sein.


Auf EnumMap-Elemente zugreifen

1. Mit entrySet(), keySet() und values()

Zum Beispiel,

 import java.util.EnumMap; class Main { enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE } public static void main(String[] args) { // Erstellen einer EnumMap des Size Enums EnumMap<Size, Integer> sizes = new EnumMap<>(Size.class); sizes.put(Size.SMALL, 28); sizes.put(Size.MEDIUM, 32); sizes.put(Size.LARGE, 36); sizes.put(Size.EXTRALARGE, 40); System.out.println("EnumMap: " + sizes); // Verwenden der entrySet() Methode System.out.println("Key/Value mappings: " + sizes.entrySet()); // Verwenden der keySet() Methode System.out.println("Keys: " + sizes.keySet()); // Verwenden der values() Methode System.out.println("Values: " + sizes.values()); } } 

Ausgabe

 EnumMap: {SMALL=28, MEDIUM=32, LARGE=36, EXTRALARGE=40} Key/Value mappings: [SMALL=28, MEDIUM=32, LARGE=36, EXTRALARGE=40] Keys: [SMALL, MEDIUM, LARGE, EXTRALARGE] Values: [28, 32, 36, 40] 

2. Mit der get() Methode

Die get() Methode gibt den Wert zurück, der mit dem angegebenen Schlüssel assoziiert ist. Sie gibt null zurück, falls der angegebene Schlüssel nicht gefunden wird.

Zum Beispiel,

 import java.util.EnumMap; class Main { enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE } public static void main(String[] args) { // Erstellen einer EnumMap des Size Enums EnumMap<Size, Integer> sizes = new EnumMap<>(Size.class); sizes.put(Size.SMALL, 28); sizes.put(Size.MEDIUM, 32); sizes.put(Size.LARGE, 36); sizes.put(Size.EXTRALARGE, 40); System.out.println("EnumMap: " + sizes); // Verwenden der get() Methode int value = sizes.get(Size.MEDIUM); System.out.println("Value of MEDIUM: " + value); } } 

Ausgabe

 EnumMap: {SMALL=28, MEDIUM=32, LARGE=36, EXTRALARGE=40} Value of MEDIUM: 32 

EnumMap-Elemente entfernen

Zum Beispiel,

 import java.util.EnumMap; class Main { enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE } public static void main(String[] args) { // Erstellen einer EnumMap des Size Enums EnumMap<Size, Integer> sizes = new EnumMap<>(Size.class); sizes.put(Size.SMALL, 28); sizes.put(Size.MEDIUM, 32); sizes.put(Size.LARGE, 36); sizes.put(Size.EXTRALARGE, 40); System.out.println("EnumMap: " + sizes); // Verwenden der remove() Methode int value = sizes.remove(Size.MEDIUM); System.out.println("Removed Value: " + value); boolean result = sizes.remove(Size.SMALL, 28); System.out.println("Is the entry {SMALL=28} removed? " + result); System.out.println("Updated EnumMap: " + sizes); } } 

Ausgabe

 EnumMap: {SMALL=28, MEDIUM=32, LARGE=36, EXTRALARGE=40} Removed Value: 32 Is the entry {SMALL=28} removed? True Updated EnumMap: {LARGE=36, EXTRALARGE=40} 

EnumMap-Elemente ersetzen

 import java.util.EnumMap; class Main { enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE } public static void main(String[] args) { // Erstellen einer EnumMap des Size Enums EnumMap<Size, Integer> sizes = new EnumMap<>(Size.class); sizes.put(Size.SMALL, 28); sizes.put(Size.MEDIUM, 32); sizes.put(Size.LARGE, 36); sizes.put(Size.EXTRALARGE, 40); System.out.println("EnumMap: " + sizes); // Verwenden der replace() Methode sizes.replace(Size.MEDIUM, 30); sizes.replace(Size.LARGE, 36, 34); System.out.println("EnumMap using replace(): " + sizes); // Verwenden der replaceAll() Methode sizes.replaceAll((key, oldValue) -> oldValue + 3); System.out.println("EnumMap using replaceAll(): " + sizes); } } 

Ausgabe

 EnumMap: {SMALL=28, MEDIUM=32, LARGE=36, EXTRALARGE=40} EnumMap using replace(): {SMALL=28, MEDIUM=30, LARGE=34, EXTRALARGE=40} EnumMap using replaceAll(): {SMALL=31, MEDIUM=33, LARGE=37, EXTRALARGE=43} 

Im obigen Programm beachten Sie die Anweisung

 sizes.replaceAll((key, oldValue) -> oldValue + 3); 

Hier greift die Methode auf alle Einträge der Map zu. Sie ersetzt dann alle Werte mit den neuen Werten, die durch die Lambda-Ausdrücke bereitgestellt werden.


Weitere Methoden

Methode Beschreibung
clone() Erstellt eine Kopie der EnumMap
containsKey() Sucht die EnumMap nach dem angegebenen Schlüssel und gibt boolean zurück
containsValue() Sucht die EnumMap nach dem angegebenen Wert und gibt boolean zurück
size() Gibt die Größe der EnumMap zurück
clear() Entfernt alle Einträge aus der EnumMap

EnumSet Vs. EnumMap

Sowohl die EnumSet- als auch die EnumMap-Klasse bieten Datenstrukturen zum Speichern von Enum-Werten. Allerdings gibt es einige wesentliche Unterschiede zwischen ihnen.


Cloneable und Serializable Interfaces

Die EnumMap-Klasse implementiert auch Cloneable und Serializable Interfaces.

Cloneable Interface

Es erlaubt der EnumMap-Klasse, eine Kopie von Instanzen der Klasse zu erstellen.

Serializable Interface

Wann immer Java-Objekte über ein Netzwerk übertragen werden müssen, müssen Objekte in Bits oder Bytes konvertiert werden. Das ist der Fall, weil Java-Objekte nicht direkt über das Netzwerk übertragen werden können.

Das Serializable Interface erlaubt Klassen, serialisiert zu werden. Das bedeutet, Objekte von Klassen, die Serializable implementieren, können in Bits oder Bytes konvertiert werden.


Java

  1. C-Enums meistern: Definition, Deklaration & Flag-Operationen
  2. Java Operatoren meistern: Typen, Syntax und praktische Beispiele
  3. Java Kommentare: Typen, Verwendung und Best Practices
  4. Java Enhanced For-Schleife meistern: Syntax, Beispiele und Best Practices
  5. Java Strings meistern: Erstellung, Methoden und Best Practices
  6. Java-Schnittstellen meistern: Konzepte, Implementierung und Best Practices
  7. Java anonyme innere Klassen meistern: Definition, Syntax und praktische Beispiele
  8. Java Enums meistern: Vollständiger Leitfaden zu Enums & Enum-Klassen
  9. Java Enum-Konstruktoren erklärt mit praktischem Beispiel
  10. String-Repräsentationen in Java Enums meistern