Java EnumMap

Ebben az oktatóanyagban példák segítségével megismerhetjük a Java EnumMap osztályt és annak működését.

A EnumMapJava gyűjtemények keretrendszere egy térképes megvalósítást biztosít az enum elemeihez.

Az EnumMapEnum elemeket kulcsként használják . Megvalósítja a Map felületet.

Mielőtt megtudnánk EnumMap, mindenképpen ismerjen a Java Enums-ről.

EnumMap létrehozása

Enum térkép készítéséhez java.util.EnumMapelőször importálnunk kell a csomagot. A csomag importálása után a következőképpen készíthetünk enum térképeket Java-ban.

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

A fenti példában létrehoztunk egy méretek nevű enum térképet.

Itt,

  • Méret - az értékeket leképező felsorolás gombjai
  • Egész szám - a megfelelő kulcsokhoz rendelt enum térkép értékei

Az EnumMap módszerei

Az EnumMaposztály olyan módszereket nyújt, amelyek lehetővé teszik számunkra, hogy különféle elemeket hajtsunk végre az enum térképeken.

Helyezze be az ElumMap elemeket

  • put() - beszúrja a megadott kulcs / érték leképezést (bejegyzést) az enum térképbe
  • putAll() - beszúrja a térképbe a megadott térkép összes bejegyzését

Például,

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

Kimenet

 EnumMap1: (KIS = 28, KÖZepes = 32) EnumMap2: (KIS = 28, KÖZepes = 32, NAGY = 36) 

A fenti példában azt a putAll()módszert alkalmaztuk, hogy egy enum térképméret1 összes elemét beszúrjuk a méretek enum térképébe2.

Az is lehetséges, hogy helyezze elemek más térképek, mint például HashMap, TreeMapstb, hogy enum térkép segítségével putAll(). Azonban minden térképnek azonos enum típusúnak kell lennie.

Hozzáférés az EnumMap elemekhez

1. A entrySet (), keySet () és értékek () használatával

  • entrySet() - egy enum térkép összes kulcsának / értékének leképezését (bejegyzését) adja vissza
  • keySet() - egy enum térkép összes kulcsának halmazát adja vissza
  • values() - egy enum térkép összes értékének halmazát adja vissza

Például,

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

Kimenet

 EnumMap: (KIS = 28, KÖZEPES = 32, NAGY = 36, EXTRALARGE = 40) Kulcs / érték leképezések: (KIS = 28, KÖZepes = 32, NAGY = 36, KIVITELES = 40) Gombok: (KIS, KÖZEPES, NAGY, EXTRALARGE) Értékek: (28, 32, 36, 40) 

2. A get () metódus használata

A get()metódus a megadott kulccsal társított értéket adja vissza. Visszatér, nullha a megadott kulcs nem található.

Például,

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

Kimenet

 EnumMap: (KIS = 28, KÖZepes = 32, NAGY = 36, KIVESZES = 40) 

Távolítsa el az EnumMap elemeket

  • remove(key) - visszatér és eltávolítja a térképről a megadott kulccsal társított bejegyzést
  • remove(key, value) - csak akkor távolítja el a bejegyzést a térképről, ha a megadott kulcs hozzá van rendelve a megadott értékhez, és logikai értéket ad vissza

Például,

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

Kimenet

EnumMap: (KIS = 28, KÖZepes = 32, NAGY = 36, EXTRALARGE = 40) Eltávolított érték: 32 Eltávolították a bejegyzést (KIS = 28)? Igaz frissített EnumMap: (LARGE = 36, EXTRALARGE = 40)

Cserélje ki az EnumMap elemeket

  • replace(key, value) - a megadott kulccsal társított értéket kicseréli az új értékre
  • replace(key, old, new) - csak akkor cseréli le a régi értéket az új értékre, ha a régi érték már társítva van a megadott kulccsal
  • replaceAll(function) - a térkép minden értékét lecseréli a megadott függvény eredményére
 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); ) ) 

Kimenet

 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.

A Serializablefelület lehetővé teszi az osztályok sorosítását. Ez azt jelenti, hogy a megvalósító osztályok objektumai Serializablebitekké vagy bájtokká alakíthatók.

érdekes cikkek...