В этом руководстве мы узнаем о классе Java EnumMap и его операциях с помощью примеров.
EnumMap
Класс рамках коллекции Java обеспечивает реализацию карты для элементов перечисления.
В EnumMap
качестве ключей используются элементы перечисления . Он реализует интерфейс карты.
Прежде чем мы узнаем об этом EnumMap
, обязательно ознакомьтесь с Java Enums.
Создание EnumMap
Чтобы создать карту перечисления, мы должны java.util.EnumMap
сначала импортировать пакет. После импорта пакета вот как мы можем создавать карты перечисления в Java.
enum Size ( SMALL, MEDIUM, LARGE, EXTRALARGE ) EnumMap sizes = new EnumMap(Size.class);
В приведенном выше примере мы создали карту перечисления с именем sizes.
Вот,
- Размер - ключи перечисления, которые сопоставляются со значениями
- Целое число - значения карты перечисления, связанные с соответствующими ключами
Методы EnumMap
EnumMap
Класс предоставляет методы, позволяющие выполнять различные элементы на картах перечислений.
Вставить элементы в 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()
. Однако все карты должны быть одного типа enum.
Доступ к элементам EnumMap
1. Использование entrySet (), keySet () и values ()
entrySet()
- возвращает набор всех сопоставлений ключей / значений (записи) карты перечисленияkeySet()
- возвращает набор всех ключей enum mapvalues()
- возвращает набор всех значений enum map
Например,
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: (SMALL = 28, MEDIUM = 32, LARGE = 36, EXTRALARGE = 40) Сопоставления ключей / значений: (SMALL = 28, MEDIUM = 32, LARGE = 36, EXTRALARGE = 40) Ключи: (SMALL, MEDIUM, LARGE, 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: (SMALL = 28, MEDIUM = 32, LARGE = 36, EXTRALARGE = 40) Значение MEDIUM: 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: (БОЛЬШОЙ = 36, ЧРЕЗВЫЧАЙНЫЙ = 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 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
могут быть преобразованы в биты или байты.