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

Java EnumSet

Java EnumSet

Dans ce tutoriel, nous allons découvrir la classe Java EnumSet et ses différentes méthodes à l'aide d'exemples.

Le EnumSet La classe du framework de collections Java fournit une implémentation d'ensemble d'éléments d'une seule énumération.

Avant d'en savoir plus sur EnumSet, assurez-vous de connaître Java Enums.

Il implémente l'interface Set.

Création d'un ensemble d'énumérations

Afin de créer un ensemble enum, nous devons importer le java.util.EnumSet paquet d'abord.

Contrairement aux autres implémentations d'ensembles, l'ensemble enum n'a pas de constructeurs publics. Nous devons utiliser les méthodes prédéfinies pour créer un ensemble enum.

1. Utilisation de allOf(Taille)

Le allof() La méthode crée un ensemble d'énumération qui contient toutes les valeurs du type d'énumération spécifié Taille . Par exemple,

import java.util.EnumSet;

class Main {
    // an enum named Size
    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }
    
    public static void main(String[] args) {

        // Creating an EnumSet using allOf()
        EnumSet<Size> sizes = EnumSet.allOf(Size.class);

        System.out.println("EnumSet: " + sizes);
    }

}

Sortie

EnumSet: [SMALL, MEDIUM, LARGE, EXTRALARGE]

Remarquez la déclaration,

EnumSet<Size> sizes = EnumSet.allOf(Size.class);

Ici, Size.class désigne la Taille enum que nous avons créé.

2. Utilisation de noneOf(Size)

Le noneOf() La méthode crée un ensemble d'énumération vide. Par exemple,

import java.util.EnumSet;

class Main {

     // an enum type Size
    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }

    public static void main(String[] args) {

        // Creating an EnumSet using noneOf()
        EnumSet<Size> sizes = EnumSet.noneOf(Size.class);

        System.out.println("Empty EnumSet: " + sizes);
    }
}

Sortie

Empty EnumSet : []

Ici, nous avons créé une énumération vide nommée sizes .

Remarque  :Nous ne pouvons insérer que des éléments de type enum Taille dans le programme ci-dessus. C'est parce que nous avons créé notre ensemble d'énumération vide en utilisant Taille énumération.

3. Utilisation de la méthode range(e1, e2)

Le range() La méthode crée un ensemble enum contenant toutes les valeurs d'un enum entre e1 et e2 incluant les deux valeurs. Par exemple,

import java.util.EnumSet;

class Main {

    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }

    public static void main(String[] args) {

        // Creating an EnumSet using range()
        EnumSet<Size> sizes = EnumSet.range(Size.MEDIUM, Size.EXTRALARGE);

        System.out.println("EnumSet: " + sizes);
    }
}

Sortie

EnumSet: [MEDIUM, LARGE, EXTRALARGE]

4. Utilisation de la méthode of()

Le of() La méthode crée un ensemble d'énumérations contenant les éléments spécifiés. Par exemple,

import java.util.EnumSet;

class Main {

    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }

    public static void main(String[] args) {

        // Using of() with a single parameter
        EnumSet<Size> sizes1 = EnumSet.of(Size.MEDIUM);
        System.out.println("EnumSet1: " + sizes1);

        EnumSet<Size> sizes2 = EnumSet.of(Size.SMALL, Size.LARGE);
        System.out.println("EnumSet2: " + sizes2);
    }
}

Sortie

EnumSet1: [MEDIUM]
EnumSet2: [SMALL, LARGE]

Méthodes d'EnumSet

Le EnumSet La classe fournit des méthodes qui nous permettent d'effectuer divers éléments sur l'ensemble enum.

Insérer des éléments dans EnumSet

  • add() - insère les valeurs d'énumération spécifiées dans l'ensemble d'énumération
  • addAll() insère tous les éléments de la collection spécifiée dans l'ensemble

Par exemple,

import java.util.EnumSet;

class Main {

    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }

    public static void main(String[] args) {

        // Creating an EnumSet using allOf()
        EnumSet<Size> sizes1 = EnumSet.allOf(Size.class);

        // Creating an EnumSet using noneOf()
        EnumSet<Size> sizes2 = EnumSet.noneOf(Size.class);

        // Using add method
        sizes2.add(Size.MEDIUM);
        System.out.println("EnumSet Using add(): " + sizes2);

        // Using addAll() method
        sizes2.addAll(sizes1);
        System.out.println("EnumSet Using addAll(): " + sizes2);
    }
}

Sortie

EnumSet using add(): [MEDIUM]
EnumSet using addAll(): [SMALL, MEDIUM, LARGE, EXTRALARGE]

Dans l'exemple ci-dessus, nous avons utilisé le addAll() méthode pour insérer tous les éléments d'un ensemble enum sizes1 à un ensemble d'énumérations tailles2 .

Il est également possible d'insérer des éléments d'autres collections telles que ArrayList , LinkedList , etc. à un ensemble d'énumération en utilisant addAll() . Cependant, toutes les collections doivent être du même type enum.

Accéder aux éléments EnumSet

Pour accéder aux éléments d'un ensemble enum, nous pouvons utiliser le iterator() méthode. Pour utiliser cette méthode, nous devons importer le java.util.Iterator forfait. Par exemple,

import java.util.EnumSet;
import java.util.Iterator;

class Main {

    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }

    public static void main(String[] args) {

        // Creating an EnumSet using allOf()
        EnumSet<Size> sizes = EnumSet.allOf(Size.class);

        Iterator<Size> iterate = sizes.iterator();

        System.out.print("EnumSet: ");
        while(iterate.hasNext()) {
            System.out.print(iterate.next());
            System.out.print(", ");
        }
    }
}

Sortie

EnumSet: SMALL, MEDIUM, LARGE, EXTRALARGE,

Remarque :

  • hasNext() renvoie true s'il y a un élément suivant dans l'ensemble enum
  • next() renvoie l'élément suivant dans l'ensemble enum

Supprimer les éléments EnumSet

  • remove() - supprime l'élément spécifié de l'ensemble enum
  • removeAll() - supprime tous les éléments de l'ensemble enum

Par exemple,

import java.util.EnumSet;

class Main {

    enum Size {
        SMALL, MEDIUM, LARGE, EXTRALARGE
    }

    public static void main(String[] args) {

        // Creating EnumSet using allOf()
        EnumSet<Size> sizes = EnumSet.allOf(Size.class);
        System.out.println("EnumSet: " + sizes);

        // Using remove()
        boolean value1 = sizes.remove(Size.MEDIUM);
        System.out.println("Is MEDIUM removed? " + value1);

        // Using removeAll()
        boolean value2 = sizes.removeAll(sizes);
        System.out.println("Are all elements removed? " + value2);
    }
}

Sortie

EnumSet: [SMALL, MEDIUM, LARGE, EXTRALARGE]
Is MEDIUM removed? true
Are all elements removed? true

Autres méthodes

Méthode Description
copyOf() Crée une copie du EnumSet
contains() Recherche le EnumSet pour l'élément spécifié et renvoie un résultat booléen
isEmpty() Vérifie si le EnumSet est vide
size() Renvoie la taille du EnumSet
clear() Supprime tous les éléments du EnumSet

Interfaces clonables et sérialisables

Le EnumSet la classe implémente également Cloneable et Serializable interfaces.

Interface clonable

Il permet le EnumSet class pour faire une copie des instances de la classe.

Interface sérialisable

Chaque fois que des objets Java doivent être transmis sur un réseau, les objets doivent être convertis en bits ou en octets. En effet, les objets Java ne peuvent pas être transmis sur le réseau.

Le Serializable interface permet aux classes d'être sérialisées. Cela signifie des objets des classes implémentant Serializable peut être converti en bits ou en octets.

Pourquoi EnumSet ?

Le EnumSet fournit un moyen efficace de stocker les valeurs enum que les autres implémentations d'ensemble (comme HashSet , TreeSet ).

Un ensemble d'énumération ne stocke que les valeurs d'énumération d'une énumération spécifique. Par conséquent, la JVM connaît déjà toutes les valeurs possibles de l'ensemble.

C'est la raison pour laquelle les ensembles d'énumération sont implémentés en interne sous la forme d'une séquence de bits. Bits spécifie si des éléments sont présents ou non dans le jeu d'énumération.

Le bit d'un élément correspondant est activé si cet élément est présent dans l'ensemble.


Java

  1. Opérateurs Java
  2. Commentaires Java
  3. Java pour chaque boucle
  4. Chaînes Java
  5. Classe anonyme Java
  6. Énumérations Java
  7. Constructeur d'énumération Java
  8. Java essayer avec des ressources
  9. Annotations Java