Java EnumMap

En este tutorial, aprenderemos sobre la clase Java EnumMap y sus operaciones con la ayuda de ejemplos.

La EnumMapclase del marco de colecciones de Java proporciona una implementación de mapa para los elementos de una enumeración.

En EnumMap, los elementos enum se utilizan como claves . Implementa la interfaz Map.

Antes de aprender EnumMap, asegúrese de conocer las enumeraciones de Java.

Creando un EnumMap

Para crear un mapa de enumeración, java.util.EnumMapprimero debemos importar el paquete. Una vez que importamos el paquete, así es como podemos crear mapas de enumeración en Java.

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

En el ejemplo anterior, hemos creado un mapa de enumeración llamado tamaños.

Aquí,

  • Tamaño: claves de la enumeración que se asignan a valores
  • Entero: valores del mapa de enumeración asociado con las claves correspondientes

Métodos de EnumMap

La EnumMapclase proporciona métodos que nos permiten realizar varios elementos en los mapas de enumeración.

Insertar elementos en EnumMap

  • put() - inserta el mapeo de clave / valor especificado (entrada) en el mapa de enumeración
  • putAll() - inserta todas las entradas de un mapa específico en este mapa

Por ejemplo,

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

Salida

 EnumMap1: (PEQUEÑO = 28, MEDIO = 32) EnumMap2: (PEQUEÑO = 28, MEDIO = 32, GRANDE = 36) 

En el ejemplo anterior, hemos utilizado el putAll()método para insertar todos los elementos de un mapa de enumeración tamaños1 en un mapa de enumeración de tamaños2.

También es posible insertar elementos de otros mapas, tales como HashMap, TreeMap, etc. a un mapa enum usando putAll(). Sin embargo, todos los mapas deben ser del mismo tipo de enumeración.

Acceder a los elementos de EnumMap

1. Usando entrySet (), keySet () y values ​​()

  • entrySet() - devuelve un conjunto de todas las claves / mapas de valores (entrada) de un mapa de enumeración
  • keySet() - devuelve un conjunto de todas las claves de un mapa de enumeración
  • values() - devuelve un conjunto de todos los valores de un mapa de enumeración

Por ejemplo,

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

Salida

 EnumMap: (SMALL = 28, MEDIUM = 32, LARGE = 36, EXTRALARGE = 40) Asignaciones clave / valor: (SMALL = 28, MEDIUM = 32, LARGE = 36, EXTRALARGE = 40) Teclas: (SMALL, MEDIUM, LARGE, EXTRALARGE) Valores: (28, 32, 36, 40) 

2. Usando el método get ()

El get()método devuelve el valor asociado con la clave especificada. Vuelve nullsi no se encuentra la clave especificada.

Por ejemplo,

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

Salida

 EnumMap: (PEQUEÑO = 28, MEDIO = 32, GRANDE = 36, EXTRALARGO = 40) Valor de MEDIO: 32 

Eliminar elementos de EnumMap

  • remove(key) - devuelve y elimina la entrada asociada con la clave especificada del mapa
  • remove(key, value) - elimina la entrada del mapa solo si la clave especificada se asigna al valor especificado y devuelve un valor booleano

Por ejemplo,

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

Salida

EnumMap: (PEQUEÑO = 28, MEDIO = 32, GRANDE = 36, EXTRALARGO = 40) Valor eliminado: 32 ¿Se eliminó la entrada (PEQUEÑO = 28)? True EnumMap actualizado: (LARGE = 36, EXTRALARGE = 40)

Reemplazar elementos de EnumMap

  • replace(key, value) - reemplaza el valor asociado con la clave especificada por el nuevo valor
  • replace(key, old, new) - reemplaza el valor anterior con el nuevo valor solo si el valor anterior ya está asociado con la clave especificada
  • replaceAll(function) - reemplaza cada valor del mapa con el resultado de la función especificada
 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); ) ) 

Salida

 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.

La Serializableinterfaz permite serializar clases. Esto significa que los objetos de las clases implementadas Serializablese pueden convertir en bits o bytes.

Articulos interesantes...