Selles õpetuses õpime näidete abil Java EnumMapi klassi ja selle toiminguid.
EnumMap
Klassi Java kogud raamistik annab kaardil rakendamise elemente ENUMi.
Aastal EnumMap
kasutatakse võtmetena enum elemente . See rakendab Mapi liidest.
Enne kui õpime EnumMap
, veenduge, et oleksite teadlik Java Enumsist.
EnumMapi loomine
Enum-kaardi loomiseks peame java.util.EnumMap
esmalt paketi importima . Kui pakett on imporditud, saate Java-s loendikaarte luua järgmiselt.
enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) EnumMap sizes = new EnumMap(Size.class);
Ülaltoodud näites oleme loonud enum-kaardi nimega suurused.
Siin,
- Suurus - loendi klahvid , mis seostuvad väärtustega
- Täisarv - vastavate klahvidega seotud loendikaardi väärtused
EnumMapi meetodid
EnumMap
Klassi ette meetodid, mis võimaldavad meil sooritada erinevaid elemente enum kaarte.
Sisestage elemendid EnumMapile
put()
- sisestab loendi kaardile määratud võtme / väärtuse kaardistamise (sisestuse)putAll()
- lisab sellele kaardile kõik määratud kaardi kirjed
Näiteks,
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äljund
EnumMap1: (VÄIKE = 28, KESKMINE = 32) EnumMap2: (VÄIKE = 28, KESKMINE = 32, SUUR = 36)
Ülaltoodud näites oleme kasutanud putAll()
meetodit kõigi loendikaardi suuruste1 elementide sisestamiseks suuruste loendikaardile2.
Samuti on võimalik sisestada elemente teistele kaarte nagu HashMap
, TreeMap
jne ENUMi kaarti kasutades putAll()
. Kuid kõik kaardid peaksid olema sama tüüpi.
Juurdepääs EnumMapi elementidele
1. Kasutades kirjetSet (), keySet () ja väärtusi ()
entrySet()
- tagastab loendi kõigi kaartide võtmete / väärtuste kaardistamise (sisestuse) hulgakeySet()
- tagastab loendi kaardi kõigi võtmete komplektivalues()
- tagastab loendi kõigi kaartide väärtuste hulga
Näiteks,
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äljund
EnumMap: (VÄIKE = 28, KESKMINE = 32, SUUR = 36, VÄLJASUUR = 40) Võtme / väärtuse vastendused: (VÄIKE = 28, KESKKONNAS = 32, SUUR = 36, VÄLJASUUR = 40) Võtmed: (VÄIKE, KESKMINE, SUUR, VÕRDLIK) Väärtused: (28, 32, 36, 40)
2. Meetodi get () kasutamine
get()
Meetod tagastab väärtuse, mis on seotud teatud klahvi. See naaseb, null
kui määratud võtit ei leita.
Näiteks,
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äljund
EnumMap: (VÄIKE = 28, KESKMINE = 32, SUUR = 36, ÜLIKÕIGE = 40) KESKMISE väärtus: 32
Eemaldage EnumMapi elemendid
remove(key)
- tagastab ja eemaldab kaardilt määratud võtmega seotud kirjeremove(key, value)
- eemaldab kirje kaardilt ainult siis, kui määratud võti on vastendatud määratud väärtusele ja tagastab tõeväärtuse
Näiteks,
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äljund
EnumMap: (VÄIKE = 28, KESKMINE = 32, SUUR = 36, ÜLIKOOS = 40) Eemaldatud väärtus: 32 Kas kirje (VÄIKE = 28) on eemaldatud? Tõeline värskendatud EnumMap: (LARGE = 36, EXTRALARGE = 40)
Asendage EnumMapi elemendid
replace(key, value)
- asendab määratud võtmega seotud väärtuse uue väärtusegareplace(key, old, new)
- asendab vana väärtuse uue väärtusega ainult siis, kui vana väärtus on juba määratud võtmega seotudreplaceAll(function)
- asendab kaardi iga väärtuse määratud funktsiooni tulemusega
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äljund
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
Liides võimaldab klasside tuleb reastada. See tähendab, et rakendatavate klasside objekte Serializable
saab teisendada bittideks või baitideks.