Java EnumMap

Dans ce didacticiel, nous allons découvrir la classe Java EnumMap et ses opérations à l'aide d'exemples.

La EnumMapclasse du framework de collections Java fournit une implémentation de carte pour les éléments d'une énumération.

Dans EnumMap, les éléments enum sont utilisés comme clés . Il implémente l'interface Map.

Avant d'en savoir plus EnumMap, assurez-vous de connaître les énumérations Java.

Créer un EnumMap

Afin de créer une carte d'énumération, nous devons d'abord importer le java.util.EnumMappackage. Une fois que nous avons importé le package, voici comment créer des cartes enum en Java.

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

Dans l'exemple ci-dessus, nous avons créé une carte d'énumération nommée tailles.

Ici,

  • Size - clés de l'énumération qui correspondent aux valeurs
  • Entier - valeurs de la carte d'énumération associée aux clés correspondantes

Méthodes d'EnumMap

La EnumMapclasse fournit des méthodes qui nous permettent d'exécuter divers éléments sur les cartes enum.

Insérer des éléments dans EnumMap

  • put() - insère le mappage clé / valeur spécifié (entrée) dans le mappage d'énumération
  • putAll() - insère toutes les entrées d'une carte spécifiée dans cette carte

Par exemple,

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

Production

 EnumMap1: (SMALL = 28, MEDIUM = 32) EnumMap2: (SMALL = 28, MEDIUM = 32, LARGE = 36) 

Dans l'exemple ci-dessus, nous avons utilisé la putAll()méthode pour insérer tous les éléments d'une carte enum size1 dans une carte enum de taille2.

Il est également possible d'insérer des éléments d'autres cartes telles que HashMap, TreeMap, etc. à une carte en utilisant ENUM putAll(). Cependant, toutes les cartes doivent être du même type d'énumération.

Accéder aux éléments EnumMap

1. Utilisation de entrySet (), keySet () et values ​​()

  • entrySet() - retourne un ensemble de toutes les clés / valeurs de mappage (entrée) d'une carte enum
  • keySet() - renvoie un ensemble de toutes les clés d'une carte d'énumération
  • values() - retourne un ensemble de toutes les valeurs d'une carte d'énumération

Par exemple,

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

Production

 EnumMap: (SMALL = 28, MEDIUM = 32, LARGE = 36, EXTRALARGE = 40) Mappages clé / valeur: (SMALL = 28, MEDIUM = 32, LARGE = 36, EXTRALARGE = 40) Touches: (SMALL, MEDIUM, LARGE, EXTRALARGE) Valeurs: (28, 32, 36, 40) 

2. Utilisation de la méthode get ()

La get()méthode renvoie la valeur associée à la clé spécifiée. Il retourne nullsi la clé spécifiée n'est pas trouvée.

Par exemple,

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

Production

 EnumMap: (SMALL = 28, MEDIUM = 32, LARGE = 36, EXTRALARGE = 40) Valeur de MEDIUM: 32 

Supprimer les éléments EnumMap

  • remove(key) - renvoie et supprime l'entrée associée à la clé spécifiée de la carte
  • remove(key, value) - supprime l'entrée de la carte uniquement si la clé spécifiée est mappée à la valeur spécifiée et renvoie une valeur booléenne

Par exemple,

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

Production

EnumMap: (SMALL = 28, MEDIUM = 32, LARGE = 36, EXTRALARGE = 40) Valeur supprimée: 32 L'entrée (SMALL = 28) est-elle supprimée? Vrai EnumMap mis à jour: (LARGE = 36, EXTRALARGE = 40)

Remplacer les éléments EnumMap

  • replace(key, value) - remplace la valeur associée à la clé spécifiée par la nouvelle valeur
  • replace(key, old, new) - remplace l'ancienne valeur par la nouvelle valeur uniquement si l'ancienne valeur est déjà associée à la clé spécifiée
  • replaceAll(function) - remplace chaque valeur de la carte par le résultat de la fonction spécifiée
 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); ) ) 

Production

 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.

L' Serializableinterface permet de sérialiser les classes. Cela signifie que les objets des classes implémentées Serializablepeuvent être convertis en bits ou en octets.

Articles intéressants...