Java EnumMap

В этом руководстве мы узнаем о классе 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 map
  • values() - возвращает набор всех значений 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могут быть преобразованы в биты или байты.

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