Classe EnumSet en Java : Guide Complet pour les Débutants
Introduction
Bonjour à toi, aspirant programmeur Java !aujourd'hui, nous allons plonger dans le monde fascinant de EnumSet en Java. Ne t'inquiète pas si tu es nouveau dans la programmation – je serais ton guide aimable tout au long de ce voyage, tout expliquant pas à pas. À la fin de ce tutoriel, tu seras un pro de EnumSet !
EnumSet est une implémentation spécialisée de Set pour utilisation avec les types énumérés. C'est comme un club secret où seuls les constantes énumérées sont autorisées ! Imagine que tu organises une fête et que tu as une liste de différents types de collations. EnumSet est parfait pour suivre les collations que tu as décidé de servir.
Déclaration de Classe
Avant de commencer à utiliser EnumSet, jettons un œil à comment il est déclaré :
public abstract class EnumSet<E extends Enum<E>> extends AbstractSet<E> implements Cloneable, Serializable
Ouaouh, çà a l'air compliqué ! Mais ne t'inquiète pas, nous allons le décomposer :
-
public abstract class
: Cela signifie qu'EnumSet est un plan pour d'autres classes, mais nous ne pouvons pas créer un EnumSet directement. -
<E extends Enum<E>>
: Cette notation fantaisie nous indique que EnumSet fonctionne avec des types énumérés. -
extends AbstractSet<E>
: EnumSet est un type de Set, héritant de comportement d'AbstractSet. -
implements Cloneable, Serializable
: Ce sont des compétences spéciales que notre EnumSet possède, comme être capable de créer des copies de lui-même ou de se sauvegarder dans un fichier.
Méthodes de Classe
Maintenant, examinons les méthodes les plus importantes de EnumSet. Je vais les présenter dans un tableau pour une référence facile :
Méthode | Description |
---|---|
allOf(Class<E> elementType) |
Crée un EnumSet contenant tous les éléments du type énuméré spécifié |
complementOf(EnumSet<E> s) |
Crée un EnumSet avec tous les éléments non présents dans le set spécifié |
copyOf(Collection<E> c) |
Crée un EnumSet à partir de la Collection donnée |
noneOf(Class<E> elementType) |
Crée un EnumSet vide du type énuméré spécifié |
of(E e) |
Crée un EnumSet avec un seul élément spécifié |
of(E e1, E e2, ...) |
Crée un EnumSet avec deux ou plusieurs éléments spécifiés |
range(E from, E to) |
Crée un EnumSet avec une plage de constantes énumérées |
Ne t'inquiète pas si cela semble écrasant – nous verrons bientôt des exemples de leur utilisation !
Méthodes Héritées
EnumSet hérite également de méthodes de ses classes parentes. Voici quelques-unes des plus utiles :
Méthode | Héritée De | Description |
---|---|---|
add(E e) |
AbstractSet | Ajoute un élément au set |
remove(Object o) |
AbstractSet | Supprime un élément du set |
contains(Object o) |
AbstractSet | Vérifie si le set contient un élément spécifique |
size() |
AbstractCollection | Retourne le nombre d'éléments dans le set |
isEmpty() |
AbstractCollection | Vérifie si le set est vide |
clear() |
AbstractCollection | Supprime tous les éléments du set |
Exemple de Création d'un EnumSet
Maintenant, mettons cette connaissance en pratique avec un exemple amusant. Imaginez que nous planifions une semaine de vacances et que nous voulons suivre les jours où nous serons en voyage. Nous utiliserons un énuméré pour les jours de la semaine et EnumSet pour gérer nos jours de voyage.
Tout d'abord, définissons notre énuméré :
public enum DayOfWeek {
LUNDI, MARDI, MERCREDI, JEUDI, VENDREDI, SAMEDI, DIMANCHE
}
Maintenant, créons quelques EnumSets et jouons avec eux :
import java.util.EnumSet;
public class VacationPlanner {
public static void main(String[] args) {
// Crée un EnumSet avec tous les jours de la semaine
EnumSet<DayOfWeek> allDays = EnumSet.allOf(DayOfWeek.class);
System.out.println("Tous les jours : " + allDays);
// Crée un EnumSet avec juste le week-end
EnumSet<DayOfWeek> weekend = EnumSet.of(DayOfWeek.SAMEDI, DayOfWeek.DIMANCHE);
System.out.println("Jours du week-end : " + weekend);
// Crée un EnumSet avec les jours de la semaine
EnumSet<DayOfWeek> weekdays = EnumSet.complementOf(weekend);
System.out.println("Jours de la semaine : " + weekdays);
// Planifie un voyage de 3 jours
EnumSet<DayOfWeek> tripDays = EnumSet.of(DayOfWeek.VENDREDI, DayOfWeek.SAMEDI, DayOfWeek.DIMANCHE);
System.out.println("Jours du voyage : " + tripDays);
// Vérifie si notre voyage inclut un lundi
boolean includesMonday = tripDays.contains(DayOfWeek.LUNDI);
System.out.println("Notre voyage inclut-il un lundi ? " + includesMonday);
// Ajoute un jour à notre voyage
tripDays.add(DayOfWeek.JEUDI);
System.out.println("Jours du voyage mis à jour : " + tripDays);
// Supprime un jour de notre voyage
tripDays.remove(DayOfWeek.JEUDI);
System.out.println("Jours finaux du voyage : " + tripDays);
}
}
Voici ce qui se passe dans ce code :
- Nous créons un EnumSet avec tous les jours de la semaine en utilisant
EnumSet.allOf()
. - Nous créons un EnumSet pour le week-end en utilisant
EnumSet.of()
avec deux jours spécifiques. - Nous créons un EnumSet pour les jours de la semaine en utilisant
EnumSet.complementOf()
, ce qui nous donne tous les jours non inclus dans le set du week-end. - Nous planifions un voyage de 3 jours en utilisant
EnumSet.of()
avec trois jours spécifiques. - Nous vérifions si notre voyage inclut un lundi en utilisant la méthode
contains()
. - Nous ajoutons jeudi à notre voyage en utilisant la méthode
add()
. - Enfin, nous supprimons jeudi de notre voyage en utilisant la méthode
remove()
.
Lorsque vous exécutez ce code, vous verrez les EnumSets imprimés à chaque étape, montrant comment ils changent au fur et à mesure que nous les modifions.
EnumSet est incroyablement efficace pour travailler avec des types énumérés. Il utilise un vecteur de bits en interne, ce qui signifie que des opérations telles que l'ajout, la suppression et la vérification de la présence sont ultra-rapides !
N'oublie pas, la pratique fait le maître. Essaye de créer tes propres énumérés et de jouer avec EnumSet. Peut-être pourrais-tu planifier un menu pour une semaine, en suivant les repas que tu cuisineras chaque jour. Ou crée un liste de tâches pour ton horaire d'études. Les possibilités sont infinies !
J'espère que ce tutoriel t'a aidé à comprendre mieux EnumSet. Continue à coder, sois curieux et heureux de programmation en Java !
Credits: Image by storyset