Médiaforma

All posts tagged énumérations

Les énumérations sont utilisées pour définir des listes de valeurs. Elles héritent de la classe java.lang.Enum. Voici un exemple d’énumération :

enum Animal { chat, chien, cheval, poisson, girafe };

Cette simple instruction crée une structure de données qui contient cinq objets qui héritent de la classe java.lang.Object (et de ses méthodes : equals(), toString(), etc.).

Pour définir un objet de type chat, vous utiliserez l’instruction suivante :

Animal unChat = Animal.chat ;

 

Voici les méthodes utilisables sur une énumération :

Méthode Effet
toSTring() Nom de la constante désignée
valueOf() Valeur énumérée à partir de sa chaîne
values() Tableau contenant toutes les valeurs énumérées
ordinal() Numéro d’ordre d’un élément énuméré (le premier élément a pour numéro d’ordre 0)
compareTo() Compare le numéro d’ordre de deux éléments énumérés. Retourne leur distance, positive ou négative.

 

Exercice

Ecrivez quelques lignes de code pour tester ces méthodes. Par exemple, en utilisant NetBeans.

Solution

package test4;

enum Animal { chat, chien, cheval, poisson, girafe };

public class Test4 {

    public static void main(String[] args) {
        Animal unChat = Animal.chat;
        System.out.println(Animal.chat);

        Animal unChien = Animal.valueOf("chien");
        System.out.println(unChien);

        Animal[] lesAnimaux = Animal.values();
        for(Animal unAnimal:lesAnimaux)
          System.out.println(unAnimal);

        System.out.println("Position de \"chien\" dans Animal : " + unChien.ordinal());

        System.out.println("Comparaison chat et girafe : " + Animal.chat.compareTo(Animal.girafe));
        System.out.println("Comparaison poisson et chien : " + Animal.poisson.compareTo(Animal.chien));

    }

}

Et voici son exécution dans NetBeans :

 

Vous pouvez définir des constructeurs privés pour chacune des valeurs d’une énumération. Ainsi par exemple, vous pourrez associer une abréviation à chaque élément de l’abréviation.

Définissez la classe Animal comme ceci (remarquez que le mot-clé class a été remplacé par le mot-clé enum) :

public enum Animal {
    chat("CHA"), chien("CHI"), cheval("CHE"), poisson("POI"), girafe("GIR");

    private String code;

    private Animal(String code){
      this.code = code;
    }

    public String getCode(){
      return this.code;
    }

    public static void main(String[] args) {
    }

}

La création de chaque élément énuméré appelle le constructeur privé (private Animal) et initialise la propriété code avec le code qui lui est transmis, et donc avec l’abréviation de l’animal.

Par la suite, il suffit d’utiliser la méthode getCode() pour connaître l’abréviation associée à un animal donné.

Exercice

Complétez la méthode main() pour afficher l’abréviation associée au poisson.

Solution

public static void main(String[] args) {
    Animal unPoisson = Animal.poisson;
    System.out.println(unPoisson.getCode());
}

Les tableaux consistent en des listes d’éléments. D’ici a penser que les tableaux sont des collections, il n’y a qu’un pas. Et pourtant, les tableaux ne sont pas des collections car ils n’implémentent pas l’interface Collection.

//Création d’un tableau de 100 entiers
int[] leTableau = new int[100];
//Stockage de la valeur 123 dans la première cellule du tableau leTableau
leTableau[0]=123;
//Affichage de la valeur contenue dans la première cellule du tableau leTableau System.out.println(leTableau[0]);

 

Tout comme les tableaux, les collections permettent de gérer des ensembles d’éléments. Java fournit plusieurs interfaces en relation avec les collections. Nous allons passer en revue les plus importantes.

 

Les collections de type List

Une liste est une collection ordonnée. Le premier élément a pour indice 0.

Les listes peuvent être de type LinkedList ou ArrayList.