Iteratoren oder Listen für Rückgabewerte in Java

Die Klassen java.util.Iterator und java.util.List bieten eigentlich nicht viel mehr als den Zugriff auf eine Folge von Objekten. Allerdings gibt es einen grundlegenden Unterschied.

Der Unterschied besteht darin, dass in einigen Fällen die Wahl eher auf iterator als die besser geeignete Methode fällt: Iteratoren können zurückgegeben und verändert werden, bevor die gespeicherten Daten vollständig verfügbar sind. Listen bzw. Arrays hingegen müssen erst vollständig bestückt sein, bevor man ihren Rückgabewert zuverlässig erhält.

Stellen Sie sich einen Fall vor, wo Sie einen Strom von Objekten aus einer Quelle beziehen, die jedes Objekt mit einer gewissen Zeitverzögerung erstellt. Diese Situation kommt recht häufig vor bei Software, die Ein- und Ausgaben in einem Netzwerk verwendet, oder auch bei umfangreichen Abfrage-Ergebnissen aus Datenbanken. Wenn Sie nach einer Methode suchen, die eine Reihe von Objekten liefert, welche die Ergebnisse dieser langsamen Datenquelle repräsentieren, bietet sich sowohl eine Liste als auch ein Iterator an. Versuchen wie es zuerst mit einer Liste.

Eine Liste verwenden

In Listing A sehen Sie, dass die getUsers-Methode das vollständige Ergebnis zwischenspeichert, bevor sie die Liste zurückgibt. Dies erfordert unter Umständen nicht nur sehr viel Speicherplatz, sondern kann auch zu unnötigen Verzögerungen führen. Wenn der Aufrufer der getUsers-Methode die zurückgegebenen Objekte jeweils einzeln bearbeiten will – ausdrucken zum Beispiel -, ist die Erstellung einer Collection überflüssig.

Themenseiten: Anwendungsentwicklung, Software

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

ZDNet für mobile Geräte
ZDNet-App für Android herunterladen Lesen Sie ZDNet-Artikel in Google Currents ZDNet-App für iOS

Artikel empfehlen:

Neueste Kommentare 

Noch keine Kommentare zu Iteratoren oder Listen für Rückgabewerte in Java

Kommentar hinzufügen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *