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 EnumMap
Java gyűjtemények keretrendszere egy térképes megvalósítást biztosít az enum elemeihez.
Az EnumMap
Enum 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.EnumMap
elő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 EnumMap
osztá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épbeputAll()
- 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
, TreeMap
stb, 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 visszakeySet()
- egy enum térkép összes kulcsának halmazát adja visszavalues()
- 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, null
ha 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éstremove(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ékrereplace(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 kulccsalreplaceAll(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 Serializable
felület lehetővé teszi az osztályok sorosítását. Ez azt jelenti, hogy a megvalósító osztályok objektumai Serializable
bitekké vagy bájtokká alakíthatók.