Iterator — ein Iterator ist ein Objekt, das Schritt für Schritt durch eine Sammlung von Elementen (Liste, Menge, Wörterbuch) navigiert, ohne dass man die innere Struktur der Sammlung kennen muss. Er liefert auf Anfrage jeweils das nächste Element und merkt sich, wo er gerade steht.
Wie funktioniert ein Iterator?
Statt über einen Index direkt auf Elemente zuzugreifen, fragt man den Iterator nacheinander nach dem nächsten Element. In Python geschieht das mit der Funktion next(); in Schleifen steckt die Iterator-Logik hinter der for-Schleife automatisch. Ist das Ende erreicht, meldet der Iterator das Ende — die Schleife bricht ab.
zahlen = [10, 20, 30]
it = iter(zahlen)
print(next(it)) # 10
print(next(it)) # 20
Warum Iteratoren?
- Speichereffizienz: Ein Iterator kann Werte erst bei Bedarf erzeugen (lazy evaluation). Riesige Datenmengen lassen sich so verarbeiten, ohne alles gleichzeitig im Speicher zu halten.
- Einheitliches Interface: Egal ob Array, Liste oder Baum — dieselbe Iterator-API funktioniert überall.
- Kapselung: Die interne Datenstruktur bleibt verborgen; der Iterator übernimmt die Navigation.
Iteratoren in der Praxis
In Python liefern iter() und next() die Grundfunktionen; in Java stellt das Interface Iterator die Methoden hasNext() und next() bereit. Auch Stacks und andere Datenstrukturen lassen sich mit Iteratoren durchlaufen. Iteratoren hängen eng mit Algorithmen und Callbacks zusammen, weil sie oft in generischen Verarbeitungsmustern eingesetzt werden.
Verwandte Grundlagen: Klasse, Refactoring, Array, Algorithmus, Stack, Lambda, JavaScript-Befehle.