next up previous contents index
Next: Itération sur les listes Up: Patterns Previous: Implémentations anonymes

    
Itérations

 

Le pattern d'itération    permet de généraliser à certaines structures de données le parcours itératif d'un intervalle d'entiers : for(i=0; i<n; i++) ; les trois opérations de ce parcours étant l'initialisation, le test de fin de parcours et l'incrémentation qui donne l'élément suivant. Un objet de type Iterator permet de parcourir une structure de données en gardant en mémoire un curseur, qui désigne non un élément, mais une position avant, ou après un élément. Au début du parcours, le curseur est avant le premier élément, et à la fin du parcours, il est après le dernier élément (figure 3.1).


 \begin{figurette}% latex2html id marker 10249
\begin{center}
\leavevmode
\fbox...
...alement, le curseur est avant le premier élément.}
\end{center} \end{figurette}

L'interface Iterator déclare les méthodes suivantes :

Toutes les collections disposent d'une méthode Iterator iterator(), qui permet d'initialiser un itérateur, de façon analogue au int i=0 qui initialise un indice de boucle entier. Par exemple, la procédure suivante permet de supprimer d'une collection tous les éléments qui ne satisfont pas une condition représentée par une méthode boolean cond(A a), à l'aide d'une boucle while :

  static void filtre(Collection c) {
    Iterator i = c.iterator();
    while (i.hasNext()) {
      if (!cond((A) i.next())) i.remove();
    }
  }

ou d'une boucle for :

  static void filtre(Collection c) {
    for (Iterator i = c.iterator(); i.hasNext(); )
      if (!cond((A) i.next())) i.remove();
  }



 
next up previous contents index
Next: Itération sur les listes Up: Patterns Previous: Implémentations anonymes
R. Lalement
2000-10-23