Java EnumMap

V tej vadnici bomo s pomočjo primerov spoznali razred Java EnumMap in njegovo delovanje.

EnumMapRazred okviru Java zbirk zagotavlja izvajanje karto za elemente z ENUM.

Leta EnumMapso ENUM elementi uporabljajo kot ključi . Izvaja vmesnik Map.

Preden se naučimo EnumMap, se prepričajte, da ste vedeli o Java Enumih.

Ustvarjanje EnumMap

Če želite ustvariti zemljevid naštevanja, moramo najprej uvoziti java.util.EnumMappaket. Ko uvozimo paket, tukaj je opisano, kako lahko v Javi ustvarimo zemljevide enum.

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

V zgornjem primeru smo ustvarili enum map z imenom velikosti.

Tukaj,

  • Velikost - tipke enum, ki preslikajo na vrednosti
  • Celo število - vrednosti mape oštevilčenja, povezane z ustreznimi ključi

Metode EnumMap

EnumMapRazred določa metode, ki nam omogočajo, da opravljajo različne elemente o ENUM zemljevidih.

Vstavite elemente v EnumMap

  • put() - vstavi določeno preslikavo ključ / vrednost (vnos) na zemljevid naštevanja
  • putAll() - na to zemljevid vstavi vse vnose določenega zemljevida

Na primer

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

Izhod

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

V zgornjem primeru smo uporabili putAll()metodo za vstavljanje vseh elementov enum map velikosti1 v enum map velikosti2.

Prav tako je mogoče na enum map vstaviti elemente z drugih zemljevidov, kot HashMapso TreeMap, itd putAll(). Vendar bi morali biti vsi zemljevidi istega števila.

Dostopite do elementov EnumMap

1. Uporaba entrySet (), keySet () in vrednosti ()

  • entrySet() - vrne nabor vseh preslikav ključev / vrednosti (vnos) zemljevida oštevilčenja
  • keySet() - vrne nabor vseh ključev zemljevida za naštevanje
  • values() - vrne niz vseh vrednosti enum map

Na primer

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

Izhod

 EnumMap: (SMALL = 28, SREDNJI = 32, LARGE = 36, EXTRALARGE = 40) Preslikave ključa / vrednosti: (SMALL = 28, SREDNJE = 32, LARGE = 36, EXTRALARGE = 40) Tipke: (SMALL, SREDNJE, LARGE, EXTRALARGE) Vrednosti: (28, 32, 36, 40) 

2. Uporaba metode get ()

get()Metoda vrne vrednost, povezano z določeno tipko. Vrne se, nullče določenega ključa ni mogoče najti.

Na primer

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

Izhod

 EnumMap: (SMALL = 28, SREDNJA = 32, LARGE = 36, EXTRALARGE = 40) Vrednost MEDIUM: 32 

Odstranite elemente EnumMap

  • remove(key) - vrne in z zemljevida odstrani vnos, povezan z določenim ključem
  • remove(key, value) - odstrani vnos s zemljevida samo, če je podan ključ preslikan na določeno vrednost in vrne logično vrednost

Na primer

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

Izhod

EnumMap: (SMALL = 28, MEDIUM = 32, LARGE = 36, EXTRALARGE = 40) Odstranjena vrednost: 32 Ali je vnos (SMALL = 28) odstranjen? Resnično posodobljen EnumMap: (LARGE = 36, EXTRALARGE = 40)

Zamenjajte elemente EnumMap

  • replace(key, value) - nadomesti vrednost, povezano z navedenim ključem, z novo vrednostjo
  • replace(key, old, new) - staro vrednost nadomesti z novo vrednostjo le, če je stara vrednost že povezana z določenim ključem
  • replaceAll(function) - zamenja vsako vrednost zemljevida z rezultatom določene funkcije
 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); ) ) 

Izhod

 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.

SerializableVmesnik omogoča razredi, ki se serialized. To pomeni, da je mogoče predmete razredov, ki se izvajajo, Serializablepretvoriti v bit ali bajt.

Zanimive Članki...