V tomto kurzu se pomocí příkladů dozvíme o třídě Java EnumMap a jejích operacích.
EnumMap
Tří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.EnumMap
nejprve 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
EnumMap
Tří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ýčtuputAll()
- 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 HashMap
jsou 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ýčtukeySet()
- vrátí sadu všech klíčů mapy výčtuvalues()
- 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, null
pokud 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íčemremove(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 hodnotoureplace(key, old, new)
- nahradí starou hodnotu novou hodnotou pouze v případě, že je stará hodnota již spojena se zadaným klíčemreplaceAll(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.
Serializable
Rozhraní umožňuje třídy určený k serializaci. To znamená, že objekty implementujících tříd Serializable
lze převést na bity nebo bajty.