Natürlich muss man manchmal mit einer Folge von Objekten mehr anfangen, als sie nur der Reihe nach zu bearbeiten. Aber wenn Sie Ihre Methode so geschrieben haben, dass sie einen Iterator zurückgibt, braucht der Aufrufer nur etwas einfachen Code wie in Listing C, um den Iterator in eine Liste umzuwandeln. Es gibt jedoch keine Möglichkeit, aus einer Liste einen Iterator zu machen, um so die Fähigkeit wiederzugewinnen, auf die ersten Daten bereits zuzugreifen, bevor die letzten erzeugt worden sind.
Ich wäre nachlässig, wenn ich nicht darauf hinweisen würde, dass es eine einfachere, aber völlig ineffektive Weise gibt, einen Iterator aus einer langsamen Datenquelle zu erzeugen. In Listing D sehen Sie eine Methode, die dieselbe Methoden-Signatur, denselben Rückgabewert und dasselbe von außen sichtbare Verhalten besitzt wie das Beispiel in Listing B. Der Unterschied liegt in der Performance und im Speicherverbrauch: Listing D packt erst alle Daten in eine Liste und erzeugt dann den Iterator. Damit bringt es all die Nachteile von Listing A mit sich, ohne dessen Vorzüge zu bieten.
Eine mögliche Verbesserung zur Iterator-Implementierung in Listing B ist ein Puffer. Die einzelne next-Variable kann durch eine LinkedList ersetzt werden, die noch nicht durch den Iterator zurückgegebene Objekte zwischenspeichert. Ein separater Worker-Thread kann den Puffer aus dem ResultSet füllen, während die next-Methode des Iterators die Daten wieder abruft. Sie könnten sogar ein High/Low-Watermark vorsehen, um sicherzustellen, dass der Puffer selber nicht zu viel Speicher verbraucht. Sie werden kaum einen Datenpfad brauchen, der so kompliziert ist, aber sollte das doch einmal der Fall sein, wird ein Iterator Ihnen gute Dienste leisten – eine Liste schafft das nicht.
Einen Bug stuft Google als besonders schwerwiegend ein. Unbefugte erhalten unter Umständen Zugriff auf Speicherinhalte…
Sie verlagert die Tabs in die neue Seitenleiste von Firefox 136. Das Update stopft auch…
Betroffen sind alle unterstützten Android-Versionen. Den Patch für eine Zero-Day-Lücke stellt Google auch als Google…
Studie von Palo Alto Networks: Deutsche Unternehmen konsolidieren ihre Cyberlösungen unterdurchschnittlich, vertrauen aber der KI.
Ein Hinweis findet sich im Code einer Vorabversion von Skype für Windows. Darin rät Microsoft…
Auch ein gesättigter Markt für Verbraucher belastet den Markt. In diesem Jahr soll die Migration…