Јава ЕнумМап

У овом упутству ћемо научити о класи Јава ЕнумМап и њеним операцијама уз помоћ примера.

EnumMapКласа у збирки оквира Јава обезбеђује примену карту за елементе енум.

У EnumMap, елементи енум се користе као кључеви . Примењује интерфејс Мап.

Пре него што научимо о EnumMap, обавезно сазнајте више о Јава Енумовима.

Креирање ЕнумМап-а

Да бисмо креирали мапу набрајања, прво морамо да увозимо java.util.EnumMapпакет. Једном када увозимо пакет, ево како можемо да креирамо енум мапе у Јави.

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

У горњем примеру смо креирали енум мапу названу величине.

Ево,

  • Величина - кључеви набрајања који мапирају вредности
  • Цео број - вредности мапе набрајања повезане са одговарајућим кључевима

Методе ЕнумМап-а

EnumMapКласа даје методе које омогућавају да обављају различите елементе о енум картама.

Уметните елементе у ЕнумМап

  • put() - убацује наведено мапирање кључа / вредности (унос) у мапу набрајања
  • putAll() - на ову мапу убацује све уносе одређене мапе

На пример,

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

Оутпут

 ЕнумМап1: (МАЛИ = 28, СРЕДЊИ = 32) ЕнумМап2: (МАЛИ = 28, СРЕДЊИ = 32, ВЕЛИКИ = 36) 

У горњем примеру смо користили putAll()методу за уметање свих елемената енум мапе величине1 у енум мапу величина2.

Такође је могуће убацити елементе из других карата, као што су HashMap, TreeMapитд на карти енум користећи putAll(). Међутим, све мапе треба да буду истог типа набрајања.

Приступите елементима ЕнумМап

1. Коришћење ентриСет (), кеиСет () и валуес ()

  • entrySet() - враћа скуп свих мапирања кључева / вредности (унос) енум мапе
  • keySet() - враћа скуп свих кључева мапе набрајања
  • values() - враћа скуп свих вредности енум мапе

На пример,

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

Оутпут

 ЕнумМап: (МАЛИ = 28, СРЕДЊИ = 32, ВЕЛИКИ = 36, ДОДАТНИ = 40) Мапирање кључа / вредности: (МАЛИ = 28, СРЕДЊИ = 32, ВЕЛИКИ = 36, ДОДАТНИ = 40) Тастери: (МАЛИ, СРЕДЊИ, ВЕЛИКИ, ЕКСТРАЛАРГЕ) Вредности: (28, 32, 36, 40) 

2. Коришћењем методе гет ()

get()Метод враћа вредност која је повезана са наведеном кључем. Враћа се nullако наведени кључ није пронађен.

На пример,

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

Оутпут

 ЕнумМап: (МАЛИ = 28, СРЕДЊИ = 32, ВЕЛИКИ = 36, ДОДАТНИ = 40) Вредност СРЕДЊИ: 32 

Уклоните елементе ЕнумМап

  • remove(key) - враћа и уклања унос повезан са наведеним кључем са мапе
  • remove(key, value) - уклања унос с мапе само ако се наведени кључ преслика на наведену вриједност и врати логичку вриједност

На пример,

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

Оутпут

ЕнумМап: (СМАЛЛ = 28, СРЕДЊИ = 32, ЛАРГЕ = 36, ЕКСТРАЛАРГЕ = 40) Уклоњена вредност: 32 Да ли је унос (СМАЛЛ = 28) уклоњен? Тачно ажурирана ЕнумМап: (ЛАРГЕ = 36, ЕКСТРАЛАРГЕ = 40)

Замените елементе ЕнумМап

  • replace(key, value) - замењује вредност повезану са наведеним кључем новом вредношћу
  • replace(key, old, new) - замењује стару вредност новом, само ако је стара вредност већ придружена наведеном кључу
  • replaceAll(function) - замењује сваку вредност карте резултатом наведене функције
 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); ) ) 

Оутпут

 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Интерфејс омогућава класе да се серијализују. То значи да се објекти реализације класа Serializableмогу претворити у битове или бајтове.

Занимљиви Чланци...