Java EnumMap

I denne opplæringen vil vi lære om Java EnumMap-klassen og dens operasjoner ved hjelp av eksempler.

Den EnumMapklassen av Java samlinger rammeverket gir et kart implementering for elementene i en enum.

I EnumMap, enum-elementer brukes som nøkler . Den implementerer Map-grensesnittet.

Før du lærer om det EnumMap, må du sørge for å vite om Java Enums.

Opprette en EnumMap

For å lage et enum-kart, må vi importere java.util.EnumMappakken først. Når vi først har importert pakken, kan du lage enum-kart i Java.

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

I eksemplet ovenfor har vi opprettet et enum-kart som heter størrelser.

Her,

  • Størrelse - nøklene til enummet som tilordnes til verdiene
  • Heltall - verdier for enumkartet knyttet til de tilsvarende tastene

Metoder for EnumMap

Den EnumMapklassen inneholder metoder som tillater oss å utføre ulike elementer på enum kart.

Sett inn elementer i EnumMap

  • put() - setter den angitte nøkkel- / verdikartleggingen (oppføring) til enum-kartet
  • putAll() - setter inn alle oppføringene til et spesifisert kart på dette kartet

For eksempel,

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

Produksjon

 EnumMap1: (SMALL = 28, MEDIUM = 32) EnumMap2: (SMALL = 28, MEDIUM = 32, LARGE = 36) 

I eksemplet ovenfor har vi brukt putAll()metoden for å sette inn alle elementene i enum kartstørrelser1 til et enum kart over størrelser2.

Det er også mulig å sette inn elementer fra andre kart, for eksempel HashMap, TreeMapetc. til en enum kart ved hjelp av putAll(). Imidlertid bør alle kart være av samme type.

Få tilgang til EnumMap Elements

1. Bruke entrySet (), keySet () og verdier ()

  • entrySet() - returnerer et sett med alle nøkkel / verdikartlegging (oppføring) til et enum-kart
  • keySet() - returnerer et sett med alle tastene til et enum-kart
  • values() - returnerer et sett med alle verdiene til et enum-kart

For eksempel,

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

Produksjon

 EnumMap: (SMALL = 28, MEDIUM = 32, LARGE = 36, EXTRALARGE = 40) Key / Value mappings: (SMALL = 28, MEDIUM = 32, LARGE = 36, EXTRALARGE = 40) Keys: (SMALL, MEDIUM, LARGE, EXTRALARGE) Verdier: (28, 32, 36, 40) 

2. Bruke get () -metoden

Den get()metoden returnerer verdien assosiert med den angitte nøkkelen. Den returnerer nullhvis den angitte nøkkelen ikke blir funnet.

For eksempel,

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

Produksjon

 EnumMap: (SMALL = 28, MEDIUM = 32, LARGE = 36, EXTRALARGE = 40) Verdi for MEDIUM: 32 

Fjern EnumMap Elements

  • remove(key) - returnerer og fjerner oppføringen tilknyttet den angitte nøkkelen fra kartet
  • remove(key, value) - fjerner bare oppføringen fra kartet hvis den spesifiserte nøkkelen tilordnes til den angitte verdien og returnerer en boolsk verdi

For eksempel,

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

Produksjon

EnumMap: (SMALL = 28, MEDIUM = 32, LARGE = 36, EXTRALARGE = 40) Fjernet verdi: 32 Er oppføringen (SMALL = 28) fjernet? Ekte oppdatert EnumMap: (LARGE = 36, EXTRALARGE = 40)

Erstatt EnumMap Elements

  • replace(key, value) - erstatter verdien som er knyttet til den angitte nøkkelen med den nye verdien
  • replace(key, old, new) - erstatter den gamle verdien med den nye verdien bare hvis den gamle verdien allerede er knyttet til den angitte nøkkelen
  • replaceAll(function) - erstatter hver verdi på kartet med resultatet av den angitte funksjonen
 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); ) ) 

Produksjon

 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.

Den Serializablegrensesnittet kan klasser bli serialisert. Dette betyr at objekter fra klassene som implementeres Serializablekan konverteres til biter eller byte.

Interessante artikler...