Java EnumMap

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

Die EnumMapKlasse des Java-Sammlungsframeworks bietet eine Kartenimplementierung für Elemente einer Aufzählung.

In EnumMapwerden Enum-Elemente als Schlüssel verwendet . Es implementiert die Map-Schnittstelle.

Bevor wir etwas darüber lernen EnumMap, sollten Sie sich mit den Java-Aufzählungen vertraut machen.

Erstellen einer EnumMap

Um eine Enum Map zu erstellen, müssen wir java.util.EnumMapzuerst das Paket importieren . Sobald wir das Paket importiert haben, können wir hier Enum Maps in Java erstellen.

 enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) EnumMap sizes = new EnumMap(Size.class); 

Im obigen Beispiel haben wir eine Aufzählungskarte mit dem Namen Größen erstellt.

Hier,

  • Größe - Schlüssel der Aufzählung, die Werten zugeordnet sind
  • Ganzzahl - Werte der Enum-Map, die den entsprechenden Schlüsseln zugeordnet sind

Methoden von EnumMap

Die EnumMapKlasse bietet Methoden, mit denen wir verschiedene Elemente auf den Enum-Maps ausführen können.

Elemente in EnumMap einfügen

  • put() - fügt die angegebene Schlüssel- / Wertzuordnung (Eintrag) in die Enum-Zuordnung ein
  • putAll() - fügt alle Einträge einer angegebenen Karte in diese Karte ein

Beispielsweise,

 import java.util.EnumMap; class Main ( enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) public static void main(String() args) ( // Creating an EnumMap of the Size enum EnumMap sizes1 = new EnumMap(Size.class); // Using the put() Method sizes1.put(Size.SMALL, 28); sizes1.put(Size.MEDIUM, 32); System.out.println("EnumMap1: " + sizes1); EnumMap sizes2 = new EnumMap(Size.class); // Using the putAll() Method 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 einer Enum-Map-Größe1 in eine Enum-Map der Größe2 einzufügen.

Es ist auch möglich , Elemente aus anderen Karten wie einzufügen HashMap, TreeMapetc. zu einer Enum Karte mit putAll(). Alle Karten sollten jedoch vom gleichen Aufzählungstyp sein.

Greifen Sie auf EnumMap-Elemente zu

1. Verwenden Sie entrySet (), keySet () und values ​​()

  • entrySet() - gibt einen Satz aller Schlüssel / Werte-Zuordnungen (Einträge) einer Enum-Zuordnung zurück
  • keySet() - gibt einen Satz aller Schlüssel einer Enum-Map zurück
  • values() - gibt einen Satz aller Werte einer Enum-Map zurück

Beispielsweise,

 import java.util.EnumMap; class Main ( enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) public static void main(String() args) ( // Creating an EnumMap of the Size enum EnumMap 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); // Using the entrySet() Method System.out.println("Key/Value mappings: " + sizes.entrySet()); // Using the keySet() Method System.out.println("Keys: " + sizes.keySet()); // Using the values() Method System.out.println("Values: " + sizes.values()); ) ) 

Ausgabe

 EnumMap: (SMALL = 28, MEDIUM = 32, LARGE = 36, EXTRALARGE = 40) Schlüssel- / Wertzuordnungen: (SMALL = 28, MEDIUM = 32, LARGE = 36, EXTRALARGE = 40) Schlüssel: (SMALL, MEDIUM, LARGE, EXTRALARGE) Werte: (28, 32, 36, 40) 

2. Verwenden Sie die Methode get ()

Die get()Methode gibt den Wert zurück, der dem angegebenen Schlüssel zugeordnet ist. Es wird zurückgegeben, nullwenn der angegebene Schlüssel nicht gefunden wird.

Beispielsweise,

 import java.util.EnumMap; class Main ( enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) public static void main(String() args) ( // Creating an EnumMap of the Size enum EnumMap 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); // Using the get() Method int value = sizes.get(Size.MEDIUM); System.out.println("Value of MEDIUM: " + value); ) ) 

Ausgabe

 EnumMap: (SMALL = 28, MEDIUM = 32, LARGE = 36, EXTRALARGE = 40) Wert von MEDIUM: 32 

Entfernen Sie EnumMap-Elemente

  • remove(key) - gibt den mit dem angegebenen Schlüssel verknüpften Eintrag zurück und entfernt ihn aus der Karte
  • remove(key, value) - Entfernt den Eintrag nur dann aus der Zuordnung, wenn der angegebene Schlüssel dem angegebenen Wert zugeordnet ist, und gibt einen booleschen Wert zurück

Beispielsweise,

 import java.util.EnumMap; class Main ( enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) public static void main(String() args) ( // Creating an EnumMap of the Size enum EnumMap 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); // Using the remove() Method 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) Entfernter Wert: 32 Wird der Eintrag (SMALL = 28) entfernt? True Aktualisierte EnumMap: (LARGE = 36, EXTRALARGE = 40)

Ersetzen Sie EnumMap-Elemente

  • replace(key, value) - ersetzt den dem angegebenen Schlüssel zugeordneten Wert durch den neuen Wert
  • replace(key, old, new) - Ersetzt den alten Wert nur dann durch den neuen Wert, wenn der alte Wert bereits dem angegebenen Schlüssel zugeordnet ist
  • replaceAll(function) - ersetzt jeden Wert der Karte durch das Ergebnis der angegebenen Funktion
 import java.util.EnumMap; class Main ( enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) public static void main(String() args) ( // Creating an EnumMap of the Size enum EnumMap 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); // Using the replace() Method sizes.replace(Size.MEDIUM, 30); sizes.replace(Size.LARGE, 36, 34); System.out.println("EnumMap using replace(): " + sizes); // Using the replaceAll() Method 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) 

In the above program, notice the statement

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

Here, the method accesses all the entries of the map. It then replaces all the values with the new values provided by the lambda expressions.

Other Methods

Method Description
clone() Creates a copy of the EnumMap
containsKey() Searches the EnumMap for the specified key and returns a boolean result
containsValue() Searches the EnumMap for the specified value and returns a boolean result
size() Returns the size of the EnumMap
clear() Removes all the entries from the EnumMap

EnumSet Vs. EnumMap

Both the EnumSet and EnumMap class provides data structures to store enum values. However, there exist some major differences between them.

  • Enum set is represented internally as a sequence of bits, whereas the enum map is represented internally as arrays.
  • Enum set is created using its predefined methods like allOf(), noneOf(), of(), etc. However, an enum map is created using its constructor.

Clonable and Serializable Interfaces

The EnumMap class also implements Cloneable and Serializable interfaces.

Cloneable Interface

It allows the EnumMap class to make a copy of instances of the class.

Serializable Interface

Whenever Java objects need to be transmitted over a network, objects need to be converted into bits or bytes. This is because Java objects cannot be transmitted over the network.

Über die SerializableSchnittstelle können Klassen serialisiert werden. Dies bedeutet, dass Objekte der implementierenden Klassen Serializablein Bits oder Bytes konvertiert werden können.

Interessante Beiträge...