ExempleCh04_08_DPIterator2RetourTélécharger Exemple du DP Iterateur La différence avec la version précédente, cet exemple utilise une inner-classe pour créer l'itérateur ExempleCh04_08.java // Exemple du DP Iterateur // La différence avec la version précédente, cet exemple utilise // une inner-classe pour créer l'itérateur public class ExempleCh04_08 { public static void main(String[] args) { // Création de ma collection MyCollection c = new MyCollection(100); c.add("UN"); c.add("DEUX"); c.add("TROIS"); c.add("QUATRE"); // Itération sur la collection Iterateur it = c.getIterateur(); while (it.hasNext()) {System.out.println( (String)(it.next()) ); } System.out.println("--------"); c.add("CINQ"); // Deuxième itération sur la collection it = c.getIterateur(); while (it.hasNext()) {System.out.println( (String)(it.next()) ); } } } // Interface de création de l'itérateur interface Iterateurable { // Retourne un iterateur public Iterateur getIterateur(); } // Interface de l'itérateur interface Iterateur { // Retourne vrai si il existe encore un élément public boolean hasNext(); // Retourne l'élément courant et passe à l'élément suivant public Object next(); } // ====================================== // Exemple de l'implémentation d'une collection qui // implémente un itérateur // // Le choix de l'implémentation de la colleciton est // un tableau contenant les éléments et un entier // qui défini le nomnre d'élément ajouté dans le tableau. // Les éléments sont ajoutés de gauche à droite à partir de 0. // class MyCollection implements Iterateurable { private int max; // Taille physique du tableau private Object[] tab; // Tableau contenant les éléments private int nb; // Nombre des éléments // Constructeur // public MyCollection(int max) { this.max = max; this.tab = new Object[this.max]; this.nb = 0; } // Ajout d'un élément dans la collection // public void add(Object o) { if (nb!=max) { tab[nb]=o; nb++; } } // ---- Implémentation de la méthodes de l'interface BuildIterateur // // Cette méthode retourne un objet qui implémente l'interface // Iterateur et qui prend en entrée la collection // public Iterateur getIterateur() { return new MyIterateur(); } // Inner Classe de définition de notre itérateur // Implémente l'interface Iterateur // class MyIterateur implements Iterateur { private int indice; // L'indice courant // Constructeur // public MyIterateur() { this.indice = 0; // L'indice est à 0 au départ } // Retourne vrai si il existe encore un élément // public boolean hasNext() { return (this.indice < nb ); } // Retourne l'élément courant et passe à l'élément suivant // public Object next() { Object o = (Object)(tab[indice]); this.indice++; return o; } } } compil.bat mkdir bin del /f /s /q bin\*.class javac -d bin *.java pause run.bat cd bin java ExempleCh04_08 pause