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).
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.
Iteratorboolean hasNext() : elle
permet de tester l'existence d'un élément après le curseur ;Object next() : elle
renvoie l'élément suivant et déplace le curseur après cet élément ;void remove() : elle
supprime le dernier élément renvoyé
par next
(c'est-à-dire l'élément avant le curseur). Cette opération est
optionnelle et peut se résumer à la levée de l'exception
UnsupportedOperationException.
Iterator iterator()
dont la fonction est d'initialiser un itérateur.
La sous-interface ListIterator
permet :
previous
et celui retourné par next).
Dans une liste de longueur n,
les index valides sont 0,
1, ..., n.boolean hasPrevious() qui teste s'il existe
un élément avant le curseur ;Object previous() qui renvoie, s'il existe,
l'élément avant le curseur ;void add(Object o)
qui permet
l'insertion d'un élément avant le curseur (c'est-à-dire entre les
éléments qui seraient retournés par appel de
Object previous() et
Object next()) ;int nextIndex()
qui renvoie l'index de l'élément avant le curseur ;int previous
qui renvoie l'index de l'élément après le curseur ;void set(Object o)
qui remplace le dernier élément retourné par
previous ou
next
(si la dernière opération a modifié la liste, c'est-à-dire si
la dernière opération a été add
ou remove, l'exception
IllegalStateException est levée).
--> 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
-->
|