Iterator ite = Set.iterator();
Iterator ite = List.iterator();
ListIterator listite = List.listIterator();
Wir können verwenden Iterator
, um ein Set
oder ein List
oder ein zu durchqueren Map
. Aber ListIterator
nur ein zu durchqueren verwendet werden List
, es kann eine nicht durchqueren Set
. Warum?
Ich weiß, dass der Hauptunterschied darin besteht, dass wir mit dem Iterator nur in eine Richtung fahren können, aber mit ListIterator
beiden Richtungen. Gibt es noch andere Unterschiede? Und irgendwelche Vorteile von ListIterator
über Iterator
?
Antworten:
Die Unterschiede sind im Javadoc for ListIterator aufgeführt
Sie können
quelle
Set
ist einfach: Es gibt keinen "aktuellen Punkt": Elemente haben keinen Index und es gibt keine nützliche Möglichkeit, ein Element "vor" oder "nach" einem anderen Element hinzuzufügen.Es gibt zwei Unterschiede:
Wir können Iterator verwenden, um Set- und List- sowie Map-Objekttypen zu durchlaufen. Ein ListIterator kann zwar zum Durchlaufen von Objekten vom Listentyp verwendet werden, nicht jedoch von Objekten vom Typ Set.
Das heißt, wir können ein Iterator-Objekt mithilfe von Set und List erhalten, siehe hier:
Mit Iterator können wir die Elemente aus dem Sammlungsobjekt nur in Vorwärtsrichtung abrufen.
Methoden im Iterator:
hasNext()
next()
remove()
Wir erhalten das ListIterator-Objekt jedoch nur von der List-Oberfläche, siehe hier:
Dabei können Sie als ListIterator in beide Richtungen (sowohl vorwärts als auch rückwärts) fahren. Es gibt also zwei weitere Methoden wie
hasPrevious()
undprevious()
andere als die von Iterator. Außerdem können wir Indizes der nächsten oder vorherigen Elemente erhalten (mitnextIndex()
undpreviousIndex()
jeweils)Methoden in ListIterator:
Das heißt, wir können das ListIterator-Objekt nicht von der Set-Schnittstelle abrufen.
Referenz: - Was ist der Unterschied zwischen Iterator und ListIterator?
quelle
Hier sind die Unterschiede zwischen ihnen:
iterator
Sie nur vorwärts gehen, aber mitListIterator
können Sie auch beim Lesen der Elemente das Rückwort verschieben.ListIterator
Sie den Index jederzeit während des Durchlaufs erhalten, was mititerator
s nicht möglich ist .iterator
können Sie nur nach dem nächsten verfügbaren Element suchen oder nicht, aber inlistiterator
können Sie vorherige und nächste Elemente überprüfen.listiterator
Sie jederzeit neue Elemente hinzufügen, während Sie durchlaufen. Nicht möglich mititerator
.listiterator
Sie ein Element beim Durchlaufen ändern, was mit nicht möglich istiterator
.Iterator Look and Feel:
ListIterator-Erscheinungsbild:
quelle