Java EnumMap

U ovom uputstvu naučit ćemo o klasi Java EnumMap i njezinim operacijama uz pomoć primjera.

EnumMapKlasa Java zbirki okvir osigurava provedbu karte za elementima nabrajanja.

U EnumMap, elementi enum koriste se kao ključevi . Provodi sučelje Map.

Prije nego što naučimo o EnumMap, pobrinite se da znate o Java Enumovima.

Stvaranje EnumMap

Da bismo stvorili kartu popisa, java.util.EnumMapprvo moramo uvesti paket. Nakon što uvozimo paket, evo kako možemo stvoriti enum karte u Javi.

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

U gornjem primjeru stvorili smo mapu popisa s nazivom veličine.

Ovdje,

  • Veličina - tipke nabrajanja koje preslikavaju na vrijednosti
  • Integer - vrijednosti mape nabrajanja povezane s odgovarajućim ključevima

Metode EnumMap

Predavanje EnumMappruža metode koje nam omogućuju izvođenje različitih elemenata na popisnim kartama.

Umetnite elemente u EnumMap

  • put() - ubacuje navedeno mapiranje ključa / vrijednosti (unos) u kartu nabrajanja
  • putAll() - na ovu kartu ubacuje sve unose određene karte

Na primjer,

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

Izlaz

 EnumMap1: (MALI = 28, SREDNJI = 32) EnumMap2: (MALI = 28, SREDNJI = 32, VELIKI = 36) 

U gornjem primjeru koristili smo putAll()metodu za umetanje svih elemenata enum karte veličine1 u enum mapu veličina2.

Također je moguće umetnuti elemente iz drugih karata, kao što su HashMap, TreeMapitd do nabrajanja karti pomoću putAll(). Međutim, sve bi karte trebale biti istog popisa.

Pristupite elementima EnumMap

1. Korištenje entrySet (), keySet () i vrijednosti ()

  • entrySet() - vraća skup svih mapiranja ključeva / vrijednosti (unos) enum karte
  • keySet() - vraća skup svih ključeva mape popisa
  • values() - vraća skup svih vrijednosti enum mape

Na primjer,

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

Izlaz

 EnumMap: (MALO = 28, SREDNJE = 32, VELIKO = 36, DODATNO = 40) Mapiranje ključa / vrijednosti: (MALO = 28, SREDNJE = 32, VELIKO = 36, DODATNO = 40) Tipke: (MALO, SREDNJE, VELIKO, EXTRALARGE) Vrijednosti: (28, 32, 36, 40) 

2. Korištenjem metode get ()

get()Metoda vraća vrijednost koja je povezana s određenom ključu. Vraća se nullako navedeni ključ nije pronađen.

Na primjer,

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

Izlaz

 EnumMap: (SMALL = 28, SREDNJI = 32, VELIKI = 36, EXTRALARGE = 40) Vrijednost SREDNJI: 32 

Uklonite elemente EnumMap

  • remove(key) - vraća i uklanja unos povezan s navedenim ključem s karte
  • remove(key, value) - uklanja unos s karte samo ako se navedeni ključ preslika na navedenu vrijednost i vrati logičku vrijednost

Na primjer,

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

Izlaz

EnumMap: (SMALL = 28, SREDNJI = 32, VELIKI = 36, EXTRALARGE = 40) Uklonjena vrijednost: 32 Je li unos (SMALL = 28) uklonjen? Istinito ažurirana karta EnumMap: (VELIKO = 36, DODATNO = 40)

Zamijenite elemente EnumMap

  • replace(key, value) - zamjenjuje vrijednost pridruženu navedenom ključu novom vrijednošću
  • replace(key, old, new) - zamjenjuje staru vrijednost novom vrijednošću samo ako je stara vrijednost već pridružena navedenom ključu
  • replaceAll(function) - zamjenjuje svaku vrijednost karte rezultatom navedene 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); ) ) 

Izlaz

 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.

SerializableSučelje omogućuje nastava se serijaliziranom. To znači da se objekti koji implementiraju klase Serializablemogu pretvoriti u bitove ili bajtove.

Zanimljivi članci...