Java EnumMap

V tomto kurzu se pomocí příkladů dozvíme o třídě Java EnumMap a jejích operacích.

EnumMapTřída sbírek rámce Java poskytuje implementaci mapu pro prvky jako výčtu.

V klíčíchEnumMap se používají prvky výčtu . Implementuje rozhraní Map.

Než se o tom dozvíme EnumMap, nezapomeňte vědět o výčtech Java.

Vytváření EnumMap

Aby bylo možné vytvořit mapu výčtu, musíme java.util.EnumMapnejprve importovat balíček. Jakmile naimportujeme balíček, můžeme v Java vytvořit enum mapy.

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

Ve výše uvedeném příkladu jsme vytvořili mapu výčtu s názvem velikosti.

Tady,

  • Velikost - klíče výčtu, které se mapují na hodnoty
  • Celé číslo - hodnoty mapy výčtu spojené s odpovídajícími klíči

Metody EnumMap

EnumMapTřída poskytuje metody, které nám umožní provádět různé prvky na ENUM mapách.

Vložit prvky do EnumMap

  • put() - vloží zadané mapování klíče / hodnoty (položka) do mapy výčtu
  • putAll() - vloží do této mapy všechny položky určené mapy

Například,

 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); ) ) 

Výstup

 EnumMap1: (SMALL = 28, STŘEDNÍ = 32) EnumMap2: (SMALL = 28, STŘEDNÍ = 32, VELKÉ = 36) 

Ve výše uvedeném příkladu jsme použili putAll()metodu k vložení všech prvků výčtu mapy velikostí1 do výčtu mapy velikostí2.

Je také možné vložit prvky z jiných map, jako HashMapjsou TreeMap, atd., Do výčtu mapy pomocí putAll(). Všechny mapy by však měly být stejného typu.

Přístup k prvkům EnumMap

1. Pomocí entrySet (), keySet () a hodnot ()

  • entrySet() - vrátí sadu všech mapování klíčů / hodnot (vstup) mapy výčtu
  • keySet() - vrátí sadu všech klíčů mapy výčtu
  • values() - vrátí sadu všech hodnot mapy výčtu

Například,

 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()); ) ) 

Výstup

 EnumMap: (SMALL = 28, MEDIUM = 32, LARGE = 36, EXTRALARGE = 40) Mapování klíč / hodnota: (SMALL = 28, MEDIUM = 32, LARGE = 36, EXTRALARGE = 40) Klávesy: (SMALL, MEDIUM, LARGE, EXTRALARGE) Hodnoty: (28, 32, 36, 40) 

2. Pomocí metody get ()

get()Metoda vrací hodnotu spojenou se zadaným klíčem. Vrátí se, nullpokud zadaný klíč nebyl nalezen.

Například,

 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); ) ) 

Výstup

 EnumMap: (MALÉ = 28, STŘEDNÍ = 32, VELKÉ = 36, VNĚJŠÍ = 40) Hodnota STŘEDNÍ: 32 

Odeberte prvky EnumMap

  • remove(key) - vrátí a odebere z mapy položku spojenou se zadaným klíčem
  • remove(key, value) - odebere položku z mapy, pouze pokud je zadaný klíč namapován na zadanou hodnotu a vrátí logickou hodnotu

Například,

 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); ) ) 

Výstup

EnumMap: (SMALL = 28, MEDIUM = 32, LARGE = 36, EXTRALARGE = 40) Odstraněná hodnota: 32 Je položka (SMALL = 28) odstraněna? Opravená aktualizace EnumMap: (LARGE = 36, EXTRALARGE = 40)

Vyměňte prvky EnumMap

  • replace(key, value) - nahradí hodnotu spojenou se zadaným klíčem novou hodnotou
  • replace(key, old, new) - nahradí starou hodnotu novou hodnotou pouze v případě, že je stará hodnota již spojena se zadaným klíčem
  • replaceAll(function) - nahradí každou hodnotu mapy výsledkem zadané funkce
 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); ) ) 

Výstup

 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.

SerializableRozhraní umožňuje třídy určený k serializaci. To znamená, že objekty implementujících tříd Serializablelze převést na bity nebo bajty.

Zajímavé články...