В този урок ще научим за класа 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
могат да бъдат преобразувани в битове или байтове.