L'interface Iterator se substitue à l'interface Enumeration dans le cadre des collections Java.

L'interface Iterator se distingue d'Enumeration par une nouvelle fonctionnalité, consistant à supprimer un élément de la collection sous-jacente.

Une autre différence réside dans le raccourcissement des noms de méthode.

Les méthodes
boolean hasNext()
retourne true si l'itérateur a encore des éléments.
Object next()
retourne le prochain élément de l'itérateur.
void remove()
supprime de la collection sous-jacente le dernier élément retourné par l'itérateur.

Le fonctionnement de l'itérateur consiste dans un premier temps, à récupérer un objet Iterator par l'intermédiaire de la méthode iterator() disponible dans toutes les classes implémentant les interfaces List et Set, telles que AbstractList, ArrayList, LinkedList, Vector, AbstractSet, HashSet, LinkedHashSet et TreeSet. Puis à l'aide d'une boucle, dont la condition d'arrêt est une expression faisant appel à la méthode hasNext() afin de vérifier si l'itérateur possède encore des éléments, récupérer dans un objet, les éléments de l'itérateur en utilisant la méthode next().

Iterator iterateur = collection.iterator();
for(Object element = null; iterateur.hasNext();){
    element = iterateur.next();
    System.out.println(element.toString());
}

Quant à la méthode remove(), il faut l'utiliser après que l'itérateur ait accédé à un élément. Dans le cas contraire, une exception java.lang.IllegalStateException serait levée. Si l'opération de suppression n'est pas supportée par l'implémentation d'Iterator, l'exception UnsupportedOperationException pourrait être lancée.

//iterateur.remove(); EXCEPTION !
element = iterateur.next();
iterateur.remove();
Exemple [voir]
import java.util.Iterator;
import java.util.LinkedList;

public class CollectionIterateur {
    public static void main(String[] args) {
      LinkedList liste = creerListeChainee();
      System.out.println("Taille de la liste avant itération : " + liste.size());
      Iterator iterateur = liste.iterator();
      System.out.println("Type reference\tValeur");
      while (iterateur.hasNext()) {
        Object element = iterateur.next();
        System.out.println(element.getClass().getName() + "\t" + element.toString());
        iterateur.remove();
      }
      System.out.println("Taille de la liste après itération : " + liste.size());
    }
    public static LinkedList creerListeChainee(){
      String[] joursSemaine = {"lundi", "mardi", "mercredi", "jeudi", 
                               "vendredi", "samedi", "dimanche"};
        LinkedList listeChainee = new LinkedList();
      for(int i = 0; i < joursSemaine.length; i++){
        listeChainee.add(joursSemaine[i]);
      }
      return listeChainee; 
    }
}