Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Java

Maîtriser Java EnumMap : Mapping Clé-Valeur Efficace avec les Enums

Java EnumMap

Dans ce tutoriel, nous apprendrons la classe Java EnumMap et ses opérations avec des exemples.

La classe EnumMap du framework de collections Java fournit une implémentation de map pour les éléments d'un enum.

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


Création d'un EnumMap

Pour créer un enum map, nous devons d'abord importer le package java.util.EnumMap. Une fois importé, voici comment créer des enum maps en Java.

enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE }
EnumMap<Size, Integer> sizes = new EnumMap<>(Size.class);

Dans l'exemple ci-dessus, nous avons créé un enum map nommé sizes.

Ici,


Méthodes d'EnumMap

La classe EnumMap fournit des méthodes permettant diverses opérations sur les enum maps.


Insérer des Éléments dans EnumMap

Par exemple,

import java.util.EnumMap;
class Main {
    enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE }
    public static void main(String[] args) {
        // Création d'un EnumMap de l'enum Size
        EnumMap<Size, Integer> sizes1 = new EnumMap<>(Size.class);
        // Utilisation de la méthode put()
        sizes1.put(Size.SMALL, 28);
        sizes1.put(Size.MEDIUM, 32);
        System.out.println("EnumMap1: " + sizes1);
        EnumMap<Size, Integer> sizes2 = new EnumMap<>(Size.class);
        // Utilisation de la méthode putAll()
        sizes2.putAll(sizes1);
        sizes2.put(Size.LARGE, 36);
        System.out.println("EnumMap2: " + sizes2);
    }
}

Sortie

EnumMap1: {SMALL=28, MEDIUM=32} EnumMap2: {SMALL=28, MEDIUM=32, LARGE=36}

Dans l'exemple ci-dessus, nous avons utilisé la méthode putAll() pour insérer tous les éléments d'un enum map sizes1 vers un enum map sizes2.

Il est aussi possible d'insérer des éléments depuis d'autres maps comme HashMap, TreeMap, etc. vers un enum map en utilisant putAll(). Cependant, toutes les maps doivent être du même type d'enum.


Accès aux Éléments d'EnumMap

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

Par exemple,

import java.util.EnumMap;
class Main {
    enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE }
    public static void main(String[] args) {
        // Création d'un EnumMap de l'enum Size
        EnumMap<Size, Integer> 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);
        // Utilisation de la méthode entrySet()
        System.out.println("Mappings Clé/Valeur: " + sizes.entrySet());
        // Utilisation de la méthode keySet()
        System.out.println("Clés: " + sizes.keySet());
        // Utilisation de la méthode values()
        System.out.println("Valeurs: " + sizes.values());
    }
}

Sortie

EnumMap: {SMALL=28, MEDIUM=32, LARGE=36, EXTRALARGE=40} Mappings Clé/Valeur: [SMALL=28, MEDIUM=32, LARGE=36, EXTRALARGE=40] Clés: [SMALL, MEDIUM, LARGE, EXTRALARGE] Valeurs: [28, 32, 36, 40]

2. Utilisation de la Méthode get()

La méthode get() retourne la valeur associée à la clé spécifiée. Elle 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) {
        // Création d'un EnumMap de l'enum Size
        EnumMap<Size, Integer> 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);
        // Utilisation de la méthode get()
        int value = sizes.get(Size.MEDIUM);
        System.out.println("Valeur de MEDIUM: " + value);
    }
}

Sortie

EnumMap: {SMALL=28, MEDIUM=32, LARGE=36, EXTRALARGE=40} Valeur de MEDIUM: 32

Suppression d'Éléments EnumMap

Par exemple,

import java.util.EnumMap;
class Main {
    enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE }
    public static void main(String[] args) {
        // Création d'un EnumMap de l'enum Size
        EnumMap<Size, Integer> 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);
        // Utilisation de la méthode remove()
        int value = sizes.remove(Size.MEDIUM);
        System.out.println("Valeur Supprimée: " + value);
        boolean result = sizes.remove(Size.SMALL, 28);
        System.out.println("L'entrée {SMALL=28} est-elle supprimée? " + result);
        System.out.println("EnumMap Mis à Jour: " + sizes);
    }
}

Sortie

EnumMap: {SMALL=28, MEDIUM=32, LARGE=36, EXTRALARGE=40} Valeur Supprimée: 32 L'entrée {SMALL=28} est-elle supprimée? True EnumMap Mis à Jour: {LARGE=36, EXTRALARGE=40}

Remplacement d'Éléments EnumMap

import java.util.EnumMap;
class Main {
    enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE }
    public static void main(String[] args) {
        // Création d'un EnumMap de l'enum Size
        EnumMap<Size, Integer> 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);
        // Utilisation de la méthode replace()
        sizes.replace(Size.MEDIUM, 30);
        sizes.replace(Size.LARGE, 36, 34);
        System.out.println("EnumMap avec replace(): " + sizes);
        // Utilisation de la méthode replaceAll()
        sizes.replaceAll((key, oldValue) -> oldValue + 3);
        System.out.println("EnumMap avec replaceAll(): " + sizes);
    }
}

Sortie

EnumMap: {SMALL=28, MEDIUM=32, LARGE=36, EXTRALARGE=40} EnumMap avec replace(): {SMALL=28, MEDIUM=30, LARGE=34, EXTRALARGE=40} EnumMap avec replaceAll(): {SMALL=31, MEDIUM=33, LARGE=37, EXTRALARGE=43}

Dans le programme ci-dessus, remarquez l'instruction

sizes.replaceAll((key, oldValue) -> oldValue + 3);

Ici, la méthode accède à toutes les entrées de la map. Elle remplace ensuite toutes les valeurs par les nouvelles valeurs fournies par les expressions lambda.


Autres Méthodes

MéthodeDescription
clone()Crée une copie de l'EnumMap
containsKey()Recherche la EnumMap pour la clé spécifiée et retourne un résultat booléen
containsValue()Recherche la EnumMap pour la valeur spécifiée et retourne un résultat booléen
size()Retourne la taille de l'EnumMap
clear()Supprime toutes les entrées de l'EnumMap

EnumSet vs EnumMap

Les classes EnumSet et EnumMap fournissent toutes deux des structures de données pour stocker des valeurs d'enum. Cependant, il existe des différences majeures entre elles.


Interfaces Cloneable et Serializable

La classe EnumMap implémente aussi les interfaces Cloneable et Serializable.

Interface Cloneable

Elle permet à la classe EnumMap de faire une copie des instances de la classe.

Interface Serializable

Chaque fois que des objets Java doivent être transmis sur un réseau, ils doivent être convertis en bits ou octets. C'est parce que les objets Java ne peuvent pas être transmis sur le réseau.

L'interface Serializable permet aux classes d'être sérialisées. Cela signifie que les objets des classes implémentant Serializable peuvent être convertis en bits ou octets.

Java

  1. Maîtriser les énumérations en C : Définition, déclaration et opérations sur les drapeaux
  2. Maîtriser les opérateurs Java : Types, syntaxe et exemples pratiques
  3. Commentaires Java : Types, utilisation et bonnes pratiques
  4. Maîtriser la boucle for améliorée en Java : Syntaxe, exemples et bonnes pratiques
  5. Maîtriser les chaînes de caractères en Java : Création, méthodes et bonnes pratiques
  6. Maîtriser les interfaces Java : concepts, implémentation et bonnes pratiques
  7. Maîtriser les classes internes anonymes en Java : définition, syntaxe et exemples pratiques
  8. Maîtriser les enums Java : guide complet des enums et classes enum
  9. Constructeurs d'enum Java expliqués avec exemple pratique