Header Ads Widget

Ticker

6/recent/ticker-posts

Java EnumMap

En este tutorial, aprenderemos sobre la clase Java EnumMap y sus operaciones con la ayuda de ejemplos.
anuncios a través de carbono¡Únase a la academia gratuita más grande para Apache Cassandra ™ hoy!ANUNCIOS A TRAVÉS DE CARBONO
La EnumMapclase del marco de colecciones de Java proporciona una implementación de mapa para elementos de una enumeración.
En EnumMap, los elementos de enumeración se utilizan como claves . Implementa la interfaz del mapa .
Java EnumMap implementa la interfaz Map.
Antes de aprender acerca de EnumMap, asegúrese de saber sobre 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.
  1. enum Size {
  2. SMALL, MEDIUM, LARGE, EXTRALARGE
  3. }
  4. EnumMap<Size, Integer> 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 asociados 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 clave / valor especificado (entrada) en el mapa enum
  • putAll() - inserta todas las entradas de un mapa especificado en este mapa
Por ejemplo,
  1. import java.util.EnumMap;
  2. class Main {
  3. enum Size {
  4. SMALL, MEDIUM, LARGE, EXTRALARGE
  5. }
  6. public static void main(String[] args) {
  7. // Creating an EnumMap of the Size enum
  8. EnumMap<Size, Integer> sizes1 = new EnumMap<>(Size.class);
  9. // Using the put() Method
  10. sizes1.put(Size.SMALL, 28);
  11. sizes1.put(Size.MEDIUM, 32);
  12. System.out.println("EnumMap1: " + sizes1);
  13. EnumMap<Size, Integer> sizes2 = new EnumMap<>(Size.class);
  14. // Using the putAll() Method
  15. sizes2.putAll(sizes1);
  16. sizes2.put(Size.LARGE, 36);
  17. System.out.println("EnumMap2: " + sizes2);
  18. }
  19. }
Salida
EnumMap1: {SMALL = 28, MEDIUM = 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 HashMapTreeMap, etc. a un mapa enum usando putAll()Sin embargo, todos los mapas deben ser del mismo tipo de enumeración.

Acceder a elementos de EnumMap

1. Usando entrySet (), keySet () y values ​​()
  • entrySet() - devuelve un conjunto de todas las claves / valores de mapeo (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,
  1. import java.util.EnumMap;
  2. class Main {
  3. enum Size {
  4. SMALL, MEDIUM, LARGE, EXTRALARGE
  5. }
  6. public static void main(String[] args) {
  7. // Creating an EnumMap of the Size enum
  8. EnumMap<Size, Integer> sizes = new EnumMap<>(Size.class);
  9. sizes.put(Size.SMALL, 28);
  10. sizes.put(Size.MEDIUM, 32);
  11. sizes.put(Size.LARGE, 36);
  12. sizes.put(Size.EXTRALARGE, 40);
  13. System.out.println("EnumMap: " + sizes);
  14. // Using the entrySet() Method
  15. System.out.println("Key/Value mappings: " + sizes.entrySet());
  16. // Using the keySet() Method
  17. System.out.println("Keys: " + sizes.keySet());
  18. // Using the values() Method
  19. System.out.println("Values: " + sizes.values());
  20. }
  21. }
Salida
EnumMap: {PEQUEÑO = 28, MEDIO = 32, GRANDE = 36, EXTRALARGE = 40}
Asignaciones de clave / valor: [PEQUEÑO = 28, MEDIO = 32, GRANDE = 36, EXTRALARGE = 40]
Claves: [PEQUEÑO, MEDIO, GRANDE, EXTRALARGE]
Valores: [28, 32, 36, 40]
2. Usando el método get ()
El get()método devuelve el valor asociado con la clave especificada. Regresa nullsi no se encuentra la clave especificada.
Por ejemplo,
  1. import java.util.EnumMap;
  2. class Main {
  3. enum Size {
  4. SMALL, MEDIUM, LARGE, EXTRALARGE
  5. }
  6. public static void main(String[] args) {
  7. // Creating an EnumMap of the Size enum
  8. EnumMap<Size, Integer> sizes = new EnumMap<>(Size.class);
  9. sizes.put(Size.SMALL, 28);
  10. sizes.put(Size.MEDIUM, 32);
  11. sizes.put(Size.LARGE, 36);
  12. sizes.put(Size.EXTRALARGE, 40);
  13. System.out.println("EnumMap: " + sizes);
  14. // Using the get() Method
  15. int value = sizes.get(Size.MEDIUM);
  16. System.out.println("Value of MEDIUM: " + value);
  17. }
  18. }
Salida
EnumMap: {PEQUEÑO = 28, MEDIO = 32, GRANDE = 36, EXTRALARGE = 40}
Valor del 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,
  1. import java.util.EnumMap;
  2. class Main {
  3. enum Size {
  4. SMALL, MEDIUM, LARGE, EXTRALARGE
  5. }
  6. public static void main(String[] args) {
  7. // Creating an EnumMap of the Size enum
  8. EnumMap<Size, Integer> sizes = new EnumMap<>(Size.class);
  9. sizes.put(Size.SMALL, 28);
  10. sizes.put(Size.MEDIUM, 32);
  11. sizes.put(Size.LARGE, 36);
  12. sizes.put(Size.EXTRALARGE, 40);
  13. System.out.println("EnumMap: " + sizes);
  14. // Using the remove() Method
  15. int value = sizes.remove(Size.MEDIUM);
  16. System.out.println("Removed Value: " + value);
  17. boolean result = sizes.remove(Size.SMALL, 28);
  18. System.out.println("Is the entry {SMALL=28} removed? " + result);
  19. System.out.println("Updated EnumMap: " + sizes);
  20. }
  21. }
Salida
EnumMap: {PEQUEÑO = 28, MEDIO = 32, GRANDE = 36, EXTRALARGE = 40}
Valor eliminado: 32
¿Se ha eliminado la entrada {SMALL = 28}? Cierto
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 antiguo valor con el nuevo valor sólo si el antiguo valor ya está asociada a la especificada clave
  • replaceAll(function)- reemplaza cada valor del mapa con el resultado de la función especificada
  1. import java.util.EnumMap;
  2. class Main {
  3. enum Size {
  4. SMALL, MEDIUM, LARGE, EXTRALARGE
  5. }
  6. public static void main(String[] args) {
  7. // Creating an EnumMap of the Size enum
  8. EnumMap<Size, Integer> sizes = new EnumMap<>(Size.class);
  9. sizes.put(Size.SMALL, 28);
  10. sizes.put(Size.MEDIUM, 32);
  11. sizes.put(Size.LARGE, 36);
  12. sizes.put(Size.EXTRALARGE, 40);
  13. System.out.println("EnumMap: " + sizes);
  14. // Using the replace() Method
  15. sizes.replace(Size.MEDIUM, 30);
  16. sizes.replace(Size.LARGE, 36, 34);
  17. System.out.println("EnumMap using replace(): " + sizes);
  18. // Using the replaceAll() Method
  19. sizes.replaceAll((key, oldValue) -> oldValue + 3);
  20. System.out.println("EnumMap using replaceAll(): " + sizes);
  21. }
  22. }
Salida
EnumMap: {PEQUEÑO = 28, MEDIO = 32, GRANDE = 36, EXTRALARGE = 40}
EnumMap usando replace (): {SMALL = 28, MEDIUM = 30, LARGE = 34, EXTRALARGE = 40}
EnumMap usando replaceAll (): {SMALL = 31, MEDIUM = 33, LARGE = 37, EXTRALARGE = 43}
En el programa anterior, observe la declaración
  1. sizes.replaceAll((key, oldValue) -> oldValue + 3);
Aquí, el método accede a todas las entradas del mapa. Luego reemplaza todos los valores con los nuevos valores proporcionados por las expresiones lambda .

Otros metodos

MétodoDescripción
clone()Crea una copia de EnumMap
containsKey()Busca la EnumMapclave especificada y devuelve un resultado booleano.
containsValue()Busca el EnumMapvalor especificado y devuelve un resultado booleano.
size()Devuelve el tamaño de EnumMap
clear()Elimina todas las entradas del EnumMap

EnumSet Vs. EnumMap

Tanto EnumSet como la EnumMapclase proporcionan una estructura de datos para almacenar valores de enumeración. Sin embargo, existen algunas diferencias importantes entre ellos.
  • El conjunto de enumeraciones se representa internamente como una secuencia de bits, mientras que el mapa de enumeraciones se representa internamente como matrices.
  • Conjunto Enum se crea utilizando sus métodos predefinidos como allOf()noneOf()of(), etc. Sin embargo, un mapa enum se crea usando su constructor.

Interfaces clonables y serializables

La EnumMapclase también implementa CloneableSerializableinterfaces.
Interfaz clonable
Permite que la EnumMapclase haga una copia de las instancias de la clase.
Interfaz serializable
Siempre que los objetos Java necesiten transmitirse a través de una red, los objetos deben convertirse en bits o bytes. Esto se debe a que los objetos Java no se pueden transmitir a través de la red.
La Serializableinterfaz permite que las clases se serialicen. Esto significa que los objetos de la implementación de clases Serializablese pueden convertir en bits o bytes.

Publicar un comentario

0 Comentarios