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érationaddAll()
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()
renvoietrue
s'il y a un élément suivant dans l'ensemble enumnext()
renvoie l'élément suivant dans l'ensemble enum
Supprimer les éléments EnumSet
remove()
- supprime l'élément spécifié de l'ensemble enumremoveAll()
- 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