Java EnumMap

У цьому посібнику ми дізнаємося про клас Java EnumMap та його операції за допомогою прикладів.

EnumMapКлас рамках колекції Java забезпечує реалізацію карти для елементів перерахування.

В EnumMap, що перераховуються елементи використовуються в якості ключів . Він реалізує інтерфейс Map.

Перш ніж ми дізнаємось про EnumMap, переконайтеся, що ви знаєте про Java Enums.

Створення EnumMap

Для того, щоб створити карту переліку, java.util.EnumMapспочатку потрібно імпортувати пакет. Як тільки ми імпортуємо пакет, ось як ми можемо створювати карти перерахувань на Java.

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

У наведеному вище прикладі ми створили карту переліку з назвою розміри.

Ось,

  • Розмір - ключі переліку, що відображають значення
  • Ціле число - значення карти переліку, пов'язані з відповідними ключами

Методи 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: (SMALL = 28, MEDIUM = 32) EnumMap2: (SMALL = 28, MEDIUM = 32, LARGE = 36) 

У наведеному вище прикладі ми застосували putAll()метод для вставки всіх елементів розміру карти перерахування1 у перелік перерахувань розмірів2.

Крім того , можна вставити елементи з інших карт , такі як 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: (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: (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 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можуть бути перетворені в біти або байти.

Цікаві статті...