Java EnumMap

В този урок ще научим за класа Java EnumMap и неговите операции с помощта на примери.

В EnumMapкласа на колекции рамките на Java осигурява изпълнението карта за елементи от ENUM.

В EnumMap, enum елементите се използват като ключове . Той реализира интерфейса Map.

Преди да научим за EnumMap, не забравяйте да знаете за Java Enums.

Създаване на EnumMap

За да създадем карта с изброяване, първо трябва да импортираме java.util.EnumMapпакета. След като импортираме пакета, ето как можем да създадем enum карти в Java.

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

В горния пример създадохме карта с преброяване, наречена размери.

Тук,

  • Размер - ключове на изброяването, които съответстват на стойности
  • Цяло число - стойности на картата на преброяването, свързани със съответните ключове

Методи на EnumMap

Най- EnumMapкласа предлага методи, които ни позволяват да изпълняват различни елементи на картите на ENUM.

Вмъкване на елементи в 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); ) ) 

Изход

 EnumMap1: (МАЛКА = 28, СРЕДНА = 32) EnumMap2: (МАЛА = 28, СРЕДНА = 32, ГОЛЯМА = 36) 

В горния пример използвахме putAll()метода, за да вмъкнем всички елементи на enum map sizes1 в enum map of sizes2.

Възможно е също така да се вмъкнат елементи от други карти като HashMap, TreeMapи т.н. в карта с изброяване, като се използва putAll(). Всички карти обаче трябва да са от един и същ тип преброяване.

Достъп до елементи на EnumMap

1. Използване на entrySet (), keySet () и стойности ()

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

Изход

 EnumMap: (МАЛКИ = 28, СРЕДНИ = 32, ГОЛЕМИ = 36, ИЗКЛЮЧИТЕЛНИ = 40) Съпоставяне на ключ / стойност: (МАЛКИ = 28, СРЕДНИ = 32, ГОЛЕМИ = 36, ИЗКЛЮЧИТЕЛНИ = 40) Клавиши: (МАЛКИ, СРЕДНИ, ГОЛЕМИ, EXTRALARGE) Стойности: (28, 32, 36, 40) 

2. Използване на метода get ()

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

Изход

 EnumMap: (МАЛКА = 28, СРЕДНА = 32, ГОЛЯМА = 36, ИЗКЛЮЧИТЕЛНА = 40) Стойност на СРЕДНА: 32 

Премахнете елементите на EnumMap

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

Изход

EnumMap: (SMALL = 28, MEDIUM = 32, LARGE = 36, EXTRALARGE = 40) Премахната стойност: 32 Премахнат ли е записът (SMALL = 28)? Вярно актуализирана EnumMap: (LARGE = 36, EXTRALARGE = 40)

Заменете елементите на EnumMap

  • 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 с използване на replace (): (SMALL = 28, MEDIUM = 30, LARGE = 34, EXTRALARGE = 40) EnumMap с използване replaceAll (): (SMALL = 31, СРЕДЕН = 33, ГОЛЯМ = 37, ИЗКЛЮЧИТЕЛЕН = 43) 

В горната програма обърнете внимание на изявлението

 sizes.replaceAll((key, oldValue) -> oldValue + 3); 

Тук методът има достъп до всички записи на картата. След това замества всички стойности с новите стойности, предоставени от ламбда изразите.

Други методи

Метод Описание
clone() Създава копие на EnumMap
containsKey() Търси EnumMapпосочения ключ и връща булев резултат
containsValue() Търси EnumMapпосочената стойност и връща булев резултат
size() Връща размера на EnumMap
clear() Премахва всички записи от EnumMap

EnumSet Vs. EnumMap

Както EnumSet, така и EnumMapкласът предоставят структури от данни за съхраняване на стойности на изброяване . Между тях обаче има някои големи разлики.

  • Enum наборът е представен вътрешно като последователност от битове, докато картата на enum е представена вътрешно като масиви.
  • Enum комплект е създаден с помощта на своите предварително определени методи като allOf(), noneOf(), of(), и т.н. Въпреки това, картата ENUM е създаден с помощта му конструктор.

Клонируеми и сериализуеми интерфейси

В EnumMapклас също сечива Cloneableи Serializableинтерфейси.

Cloneable интерфейс

Тя позволява на EnumMapкласа да прави копие на копия на класа.

Сериализуем интерфейс

Винаги, когато Java обектите трябва да се предават по мрежа, обектите трябва да се преобразуват в битове или байтове. Това е така, защото Java обектите не могат да се предават по мрежата.

В Serializableинтерфейса позволява класове да бъдат поредица. Това означава, че обектите на изпълняващите класове Serializableмогат да бъдат преобразувани в битове или байтове.

Интересни статии...