Java EnumMap

V tomto tutoriále sa pomocou príkladov dozvieme o triede Java EnumMap a jej operáciách.

EnumMapTrieda zbierok rámca Java poskytuje implementáciu mapu pre prvky ako zoznamu.

V EnumMapENUM prvky sa používajú ako kľúča . Implementuje rozhranie Mapy.

Predtým, ako sa dozvieme niečo viac EnumMap, nezabudnite vedieť o Java Enums.

Vytváranie EnumMap

Aby sme vytvorili mapu výčtu, musíme najskôr importovať java.util.EnumMapbalík. Po importovaní balíka tu môžeme vytvoriť mapy výčtu v Jave.

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

Vo vyššie uvedenom príklade sme vytvorili mapu výčtu s názvom veľkosti.

Tu,

  • Veľkosť - kľúče výčtu, ktoré sa mapujú na hodnoty
  • Celé číslo - hodnoty mapy výčtu spojené s príslušnými kľúčmi

Metódy EnumMap

EnumMapTrieda poskytuje metódy, ktoré nám umožnia vykonávať rôzne prvky na ENUM mapách.

Vložte prvky do EnumMap

  • put() - vloží zadané mapovanie kľúča / hodnoty (záznamu) do mapy výčtu
  • putAll() - vloží všetky záznamy určenej mapy na túto mapu

Naprí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ýkon

 EnumMap1: (SMALL = 28, STREDNÉ = 32) EnumMap2: (SMALL = 28, STREDNÉ = 32, VEĽKÉ = 36) 

Vo vyššie uvedenom príklade sme použili putAll()metódu na vloženie všetkých prvkov enum mapy veľkostí1 do enum mapy veľkostí2.

Je tiež možné vložiť prvky z iných máp, napríklad HashMap, TreeMap, atď. Na mape zoznamu pomocou putAll(). Všetky mapy by však mali byť rovnakého typu.

Získajte prístup k prvkom EnumMap

1. Pomocou položiek entrySet (), keySet () a values ​​()

  • entrySet() - vráti sadu všetkých mapovaní (vstupov) kľúčov / hodnôt mapy enum
  • keySet() - vráti sadu všetkých kľúčov mapy výčtu
  • values() - vráti množinu všetkých hodnôt mapy výčtu

Naprí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ýkon

 EnumMap: (MALÉ = 28, STREDNÉ = 32, VEĽKÉ = 36, VEĽKÉ = 40) Mapovanie kľúčov / hodnôt: (MALÉ = 28, STREDNÉ = 32, VEĽKÉ = 36, VNÚTORNÉ = 40) Klávesy: (MALÉ, STREDNÉ, VEĽKÉ, EXTRALARGE) Hodnoty: (28, 32, 36, 40) 

2. Pomocou metódy get ()

get()Metóda vracia hodnotu spojenú so zadaným kľúčom. Vráti sa, nullak zadaný kľúč nenájdete.

Naprí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ýkon

 EnumMap: (MALÉ = 28, STREDNÉ = 32, VEĽKÉ = 36, VNÚTORNÉ = 40) Hodnota STREDNÉho: 32 

Odstráňte prvky EnumMap

  • remove(key) - vráti a odstráni z mapy položku spojenú so zadaným kľúčom
  • remove(key, value) - odstráni položku z mapy, iba ak je zadaný kľúč namapovaný na zadanú hodnotu a vráti boolovskú hodnotu

Naprí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ýkon

EnumMap: (SMALL = 28, STREDNÉ = 32, VEĽKÉ = 36, EXTRALARGE = 40) Odstránená hodnota: 32 Je položka (SMALL = 28) odstránená? Skutočne aktualizovaná EnumMap: (VEĽKÁ = 36, EXTRALÁRNA = 40)

Vymeňte prvky EnumMap

  • replace(key, value) - nahradí hodnotu spojenú so zadaným kľúčom novou hodnotou
  • replace(key, old, new) - nahradí starú hodnotu novou hodnotou iba v prípade, že je stará hodnota už spojená so zadaným kľúčom
  • replaceAll(function) - nahradí každú hodnotu mapy výsledkom zadanej funkcie
 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ýkon

 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.

SerializableRozhranie umožňuje triedy určený na serializáciu. To znamená, že objekty implementujúcich tried Serializablemôžu byť prevedené na bity alebo bajty.

Zaujímavé články...