Collections et itérateurs

L'interface Iterator

Une des méthodes de l'interface Collection, à savoir
    Iterator iterator()
vise à construire un itérateur pour une collection.

Iterator est une interface dont ListIterator est une sous-interface adaptée aux listes.

Au travers d'une implantation de cette interface, il doit être possible de parcourir les objets constituant une collection.

Les trois opérations réalisées au cours d'un tel parcours sont :

Un objet d'une classe implantant l'interface Iterator permet de parcourir une structure de données. Pratiquement, un curseur sur une position (courante) précédant ou suivant un élément de la structure est conservé en mémoire (initialement avant le premier élément et à la fin après le dernier, entre deux éléments durant l'itération).

Remarque : L'interface Enumeration a été la première proposéee pour parcourir des structures de données. Elle offre moins de service (pas de méthode Iterator) et il est recommandé de lui préférer Iterator.

Méthodes de l'interface Iterator

Les différentes collections possèdent par ailleurs une méthode Iterator iterator() dont la fonction est d'initialiser un itérateur.

La sous-interface ListIterator permet :

Les méthodes ajoutées dans cette interface sont les suivantes :

Exemple


  --> cat UseVector3.java
  import java.util.*;
  public class UseVector3{
     public static void main(String args[]){
        Vector vect = new Vector(5);
        vect.addElement(new Integer(3));
        vect.addElement(new String("Bonjour"));
        vect.addElement(new Float(3.14));
        System.out.println("vecteur : " + vect);
        Object o;
        Iterator iter = vect.listIterator();
        while (iter.hasNext()){
             o = iter.next();
             System.out.println("    " + o);
             }
        for(Enumeration enum = vect.elements(); enum.hasMoreElements();)   
             System.out.println("    " + enum.nextElement());
        ListIterator listIter = (ListIterator) iter;
        while (listIter.hasPrevious()){
             o = listIter.previous();
             System.out.println("    " + o);
             }
        }
  }
  --> java UseVector3
  vecteur : [3, Bonjour, 3.14]
      3
      Bonjour
      3.14
      3
      Bonjour
      3.14
      3.14
      Bonjour
      3
  -->

Dernière mise à jour : 18 décembre 2005

Valid XHTML 1.0! Valid CSS!