Was ist ein Iterator?

Ein Iterator erlaubt sequentiellen Zugriff auf die Elemente einer Sammlung.

Im Beispiel wird zunächst ein TreeSet mit 20 String-Elementen initialisiert. Hier könnte problemlos auch jede andere Sammlung verwendet werden, da das zentrale Wurzel-Interface Collection vom Interface java.lang.Iterable abgeleitet ist.
In der Folge wird die Sammlung zweimal durchlaufen, zur Demonstration der Techniken einmal in einer for- und einmal in einer while-Schleife. Ein Iterator-Objekt wird mittels der Methode iterator() erzeugt. Dessen Methode hasNext() liefert true, solange der Iterator noch nicht das Ende der Collection erreicht hat. Mit next() greift man auf das jeweils nächste Element zu.
Im ersten Schleifendurchlauf wird darüber hinaus gezeigt, dass das Entfernen eines Elementes beim Iterieren über eine Collection nur mit der Methode Iterator.remove(), nicht mit Collection.remove() erfolgen darf. Hierbei entfernt Iterator.remove() das jeweils letzte mit next() ermittelte Element, das jedoch noch ausgegeben wird, da es zwar aus der Sammlung, nicht aber aus dem aktuellen Iterator entfernt wurde.

import java.util.Collections;
import java.util.Iterator;
import java.util.TreeSet;

public class IteratorTest {

    public static void main(String[] args) {
        TreeSet<String> set = new TreeSet<String>();
        for (int i = 0; i < 20; i++) {
            set.add(new Integer(i).toString());
        }

        for (Iterator<String> it = set.iterator(); it.hasNext();) {
            String s = it.next();
            if (s.equals("15"))
                it.remove();
            System.out.println(s); // "15" noch enthalten
        }

        Iterator<String> iter = set.iterator();
        while (iter.hasNext()) {
            String s = iter.next();
            // if(s.equals("15")) set.remove(s); // ConcurrentModificationException
            iter.remove();
            System.out.println(s); // "15" entfernt
        }
    }
}

Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.