Java EnumMap

Selles õpetuses õpime näidete abil Java EnumMapi klassi ja selle toiminguid.

EnumMapKlassi Java kogud raamistik annab kaardil rakendamise elemente ENUMi.

Aastal EnumMapkasutatakse 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.EnumMapesmalt 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

EnumMapKlassi 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, TreeMapjne 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) hulga
  • keySet() - tagastab loendi kaardi kõigi võtmete komplekti
  • values() - 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, nullkui 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 kirje
  • remove(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äärtusega
  • replace(key, old, new) - asendab vana väärtuse uue väärtusega ainult siis, kui vana väärtus on juba määratud võtmega seotud
  • replaceAll(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.

SerializableLiides võimaldab klasside tuleb reastada. See tähendab, et rakendatavate klasside objekte Serializablesaab teisendada bittideks või baitideks.

Huvitavad Artiklid...