Was ist der Unterschied zwischen Iterator und Iterable und wie benutzt man sie?
Ich bin neu in Java und bin ich wirklich verwirrt mit iterator-und durchsuchbar. Kann jemand mir erklären, und geben einige Beispiele?
InformationsquelleAutor der Frage Charles Cai | 2011-07-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einer
Iterable
ist eine einfache Darstellung einer Reihe von Elementen, die Durchlaufen werden können über. Es hat nicht jeder iteration Staat wie ein "Aktuelles element". Stattdessen gibt es eine Methode, produziert eineIterator
.Einer
Iterator
ist das Objekt mit iteration Zustand. Es können Sie überprüfen, ob es noch mehr Elemente mithasNext()
und zu bewegen, um das nächste element (falls vorhanden) mitnext()
.In der Regel eine
Iterable
sollte in der Lage sein zu produzieren, die eine beliebige Anzahl GültigerIterator
s.InformationsquelleAutor der Antwort ColinD
Einer Umsetzung der
Iterable
bietet eineIterator
selbst:Ein iterator ist eine einfache Möglichkeit, so dass einige, um eine Schleife durch eine Sammlung von Daten ohne eine Zuweisung von Privilegien (obwohl mit der Fähigkeit zu entfernen).
Sehen Javadoc.
InformationsquelleAutor der Antwort Keith Pinson
Iterierbar : Eine Schnittstelle, die Durchlaufen werden können über. Das heißt, einer, der eine Ahnung hat, "Holen Sie mich das erste, was, nun das nächste, was, und so weiter, bis wir Auslaufen."
Iterator : Eine Schnittstelle, die verwaltet iteration über ein durchsuchbar. Das heißt, er behält den überblick, wo wir sind in der aktuellen iteration, und weiß, was das nächste element ist und wie Sie es bekommen.
Damit ein Objekt iterierbar es muss Strahlen eine
Iterator
Objekt. Zur Durchsetzung dieses Vertrages, Iterierbar-Schnittstelle verwendet werden. Es enthält eine Methode namens iterator() und es gibt Iterator. Also, jede Klasse, die Iterierbar zurück einen Iterator.Beispielsweise in jede Sammlung. Eine Sammlung ist eine Schnittstelle, stellt container für eine Reihe von Elementen. Alle Kollektionen wie ArrayList, Vector implements Collection und Iterator so.
Einer der Vorteile von Iterierbar ist, wenn Sie implementieren Iterierbar dann die Objekt-bekommt support für: - each-Schleife syntax.
InformationsquelleAutor der Antwort Seeker
Wenn eine Sammlung ist iterierbar, dann kann es sein, Durchlaufen mit iterator (und folglich verwendet werden kann, in einer for each-Schleife.) Der iterator ist das eigentliche Objekt, wird eine Iteration durch die Sammlung.
InformationsquelleAutor der Antwort dlev
Umsetzung Iterierbar-Schnittstelle kann ein Objekt sein, das Ziel der "foreach" - Anweisung.
Iterator ist eine Schnittstelle, über die Umsetzung für die Iteration über die Elemente. Iterierbar ist eine Schnittstelle, die liefert Iterator.
InformationsquelleAutor der Antwort Nageswaran
Die wichtigste überlegung ist, ob das Element in Frage sollte in der Lage sein, um befahren werden, die mehr als einmal. Dies liegt daran, Sie können immer Rücklauf eine Iterierbar durch Aufruf von iterator() wieder, aber es gibt keine Möglichkeit zum zurück-Iterator.
InformationsquelleAutor der Antwort Praveen Kishor
Werde ich die Frage beantworten, insbesondere über die ArrayList als ein Beispiel, um zu helfen, Sie besser zu verstehen..
Das heißt, Sie konnte sehen, dass die Beziehung wie
.
Und Iterierbar, Sammlung und Liste nur erklären, sondern abstrakte Methode "iterator ()" und ArrayList allein implementiert.
'iterator ()' - Methode gibt ein Objekt der Klasse 'Itr' implementiert 'Iterator'.
Nun ist es klar? 🙂
InformationsquelleAutor der Antwort JAMES HWANG
Im Grunde kann man sagen, beide sind sehr eng miteinander verwandt.
Betrachten Iterator eine Schnittstelle, die hilft uns bei der Traversierung durch eine Kollektion, die mit der Hilfe von einigen undefinierten Methoden wie hasNext(), next() und remove()
Auf der anderen Seite, Iterierbar ist eine weitere Schnittstelle, die, wenn Sie von einer Klasse implementiert, zwingt die Klasse Iterierbar und ist ein Ziel für die For-Each-Konstrukt.
Es hat nur eine Methode namens iterator() aus Iterator-interface selbst.
Wenn eine Sammlung ist iterierbar, dann kann es sein, iteriert man über einen iterator.
Für das Verständnis besuchen diese:
ITERIERBAR: http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/Iterable.java
ITERATOR http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/Iterator.java
InformationsquelleAutor der Antwort Doomed93
Betrachten wir ein Beispiel mit 10 äpfel.
Wenn es implementiert Iterierbar , es ist, wie wenn man jeden Apfel in Boxen von 1 bis 10 und zurück einen iterator, die verwendet werden können, um zu navigieren.
Durch die Implementierung von iterator, wir können alle apple , apple im nächsten boxes etc.
Also die Umsetzung iterierbar gibt einen iterator zu navigieren, Obwohl seine Elemente zu navigieren , iterator implementiert werden müssen..
InformationsquelleAutor der Antwort Abhishek Malviya
Erläutert hierDie "Iterierbar" wurde eingeführt, um in der Lage sein zu verwenden, in der
foreach
Schleife. Eine Klasse Umsetzung der Iterierbar interface Durchlaufen werden können über.Iterator-Klasse, die es schafft iteration über eine Iterierbar. Es hält einen Zustand, wo wir in der aktuellen iteration, und weiß, was das nächste element ist und wie Sie es bekommen.
InformationsquelleAutor der Antwort Sangeeta
Frage:Unterschied zwischen Durchsuchbar und Iterator?
Ans:
iterierbar: Es ist im Zusammenhang mit der forEach-Schleife
iterator: Ist ist bezogen auf die Sammlung
Das target-element der forEach-Schleife shouble werden durchsuchbar.
Wir können Iterator um das Objekt aus der Sammlung
Iterierbar vorhanden in java.ḷang-Paket
Iterator vorhanden in java.util-Paket
Enthält nur eine Methode iterator()
Enthält drei Methode hasNext(), next(), remove()
Eingeführt, in der version 1.5
Eingeführt in version 1.2
InformationsquelleAutor der Antwort Rf Khan
Neben "ColinD" und Sucher Antworten.
In einfachen Worten, Iterierbar und Iterator sind beide Schnittstellen in der Java-Collection-Framework.
Iterierbar
Einer Klasse zu implementieren, die Iterierbar-Schnittstelle, wenn es will für jede - Schleife zur Iteration über seine Sammlung. Allerdings der for-each-Schleife kann nur verwendet werden, um durch die Sammlung in der Vorwärtsrichtung, und Sie werden nicht in der Lage, ändern Sie die Elemente in dieser Auflistung. Aber, wenn alle Sie wollen, ist das Lesen der Elemente Daten, dann ist es sehr einfach und Dank Java lambda-Ausdruck oft ist es ein liner. Zum Beispiel:
Iterator
Diese Schnittstelle ermöglicht die Iteration über eine Sammlung, den Erhalt und ausbau der Elemente. Jedes der collection-Klassen bietet ein iterator() Methode, gibt einen iterator auf den Beginn der Sammlung. Der Vorteil dieser Schnittstelle über iterierbar ist, dass mit dieser Schnittstelle können Sie hinzufügen, ändern oder entfernen von Elementen in einer Sammlung. Aber, den Zugriff auf Elemente erfordert ein bisschen mehr code, als durchsuchbar. Zum Beispiel:
Quellen:
InformationsquelleAutor der Antwort shahrukhamd