Frage

Ich bin ein Anfänger und ich kann die tatsächliche Wirkung des Iterable Schnittstelle nicht verstehen.

War es hilfreich?

Lösung

Neben dem, was Jeremy sagte, sein größter Vorteil ist, dass es sein eigenes Bit syntaktischen Zucker hat: die verbesserte for-Schleife . Wenn Sie haben, sagen wir, ein Iterable<String>, können Sie tun:

for (String str : myIterable) {
    ...
}

Schön und einfach, ist es nicht? All die schmutzige Arbeit des Iterator<String> zu schaffen, zu überprüfen, ob es hasNext() und rief str = getNext() wird hinter den Kulissen vom Compiler behandelt.

Und da die meisten Sammlungen entweder Iterable implementieren oder eine Ansicht, die einen (wie Map des keySet() oder values()) gibt, macht dies mit Sammlungen viel einfacher zu arbeiten.

Das Iterable Javadoc ein vollständiges gibt Liste der Klassen, die Iterable implementieren.

Andere Tipps

Wenn Sie eine komplizierte Datenmenge haben, wie ein Baum oder eine spiralförmige Schlange (ja, ich habe gerade die oben), aber Sie do not care , wie es intern strukturiert ist, Sie wollen einfach nur erhalten alle Elemente eines nach dem anderen, erhalten Sie es einen Iterator zurück.

Die komplexe Aufgabe in Frage, sei es ein Baum oder eine Schlange oder ein WombleBasket implementiert Iterable und kann ein Iterator-Objekt zurück, die Sie abfragen können, die Iterator Methoden verwenden.

Auf diese Weise können Sie es einfach fragen, ob es hasNext(), und wenn ja, können Sie die next() Einzelteil erhalten, ohne sich Gedanken, wo sie von dem Baum zu erhalten oder wo auch immer.

Es gibt eine java.util.Iterator. Es ist vor allem in der Lage sein zu verwenden, um die Umsetzung der Art in dem for-Schleife verbessert

verwendet
List<Item> list = ...
for (Item i:list) {
 // use i
}

Unter der Haube der Compiler ruft die list.iterator() und iteriert es Ihnen die i innerhalb der for-Schleife zu geben.

Eine Schnittstelle ist in ihrem Kern eine Liste von Methoden, die eine Klasse implementieren sollte. Die iterable Schnittstelle ist sehr einfach - es gibt nur eine Methode zu implementieren: Iterator(). Wenn eine Klasse des Iterable-Schnittstelle implementiert, wird es andere Klassen zu sagen, dass Sie ein Iterator Objekt bekommen können zu verwenden, um iterieren (das heißt, Traverse), um die Daten in dem Objekt.

Iteratoren grundsätzlich erlauben Iteration über jede Sammlung.

Es ist auch das, was Java zu verwenden, benötigt das foreach-Steueranweisung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top