Dans ce didacticiel, nous allons découvrir la classe Java EnumMap et ses opérations à l'aide d'exemples.
La EnumMap
classe 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.EnumMap
package. 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 EnumMap
classe 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érationputAll()
- 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 enumkeySet()
- renvoie un ensemble de toutes les clés d'une carte d'énumérationvalues()
- 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 null
si 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 carteremove(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 valeurreplace(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éereplaceAll(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' Serializable
interface permet de sérialiser les classes. Cela signifie que les objets des classes implémentées Serializable
peuvent être convertis en bits ou en octets.