Heim > Java > javaLernprogramm > Detaillierte Erklärung und Analyse von ListIterator und Iterator in Java

Detaillierte Erklärung und Analyse von ListIterator und Iterator in Java

高洛峰
Freigeben: 2016-12-13 17:20:45
Original
1275 Leute haben es durchsucht

Wenn Sie Java-Sammlungen verwenden, müssen Sie Iterator verwenden. Es gibt aber auch einen Iterator ListIterator in der Java-Sammlung, der bei Verwendung von List, ArrayList, LinkedList und Vector verwendet werden kann. Was ist der Unterschied zwischen diesen beiden Iteratoren? Lassen Sie es uns unten im Detail analysieren. Hier muss klargestellt werden, dass die Position, auf die der Iterator zeigt, die Position vor dem Element ist, wie in der folgenden Abbildung dargestellt:

Detaillierte Erklärung und Analyse von ListIterator und Iterator in Java

Hier wird davon ausgegangen dass die Menge List aus den vier Elementen List1, List2, List3 und List4 besteht. Bei Verwendung der Anweisung Iterator it = List.Iterator() ist die Position, auf die der Iterator zeigt, die Position, auf die Iterator1 in der obigen Abbildung zeigt Anweisung it.next(), die Position, auf die der Iterator zeigt, ist nach dem Verschieben an die Position, auf die Iterator2 im Bild oben zeigt.

Werfen wir zunächst einen Blick auf die Methoden von Iterator und ListIterator.

Iteratormethoden umfassen:

hasNext(): Wenn es Elemente nach der Position gibt, auf die der Iterator zeigt, wird true zurückgegeben, andernfalls wird false zurückgegeben.

next(): Gibt die zurück Element hinter der Position, auf die Iterator in der Sammlung zeigt

remove(): Entfernt das Element hinter der Position, auf die Iterator in der Sammlung zeigt

Die im ListIterator-Iterator enthaltenen Methoden sind:

add (E e): Fügt das angegebene Element in die Liste ein, und die Einfügeposition liegt vor der aktuellen Position des Iterators.

hasNext(): Beim Durchlaufen der Liste in Vorwärtsrichtung, falls vorhanden Sind Elemente nach dem Listeniterator, gibt es true zurück, andernfalls wird false zurückgegeben

hasPrevious(): Wenn die Liste in umgekehrter Reihenfolge durchlaufen wird und sich Elemente vor dem Listeniterator befinden, wird true zurückgegeben, andernfalls wird false zurückgegeben

next(): Gibt die Position zurück, auf die ListIterator in der Liste zeigt. Das folgende Element

nextIndex(): Gibt den Index des Elements hinter der von ListIterator benötigten Position in der Liste

previous(): Gibt das Element in der Liste vor der Position zurück, auf die ListIterator zeigt

previousIndex (): Gibt den Index des Elements vor der gewünschten Position von ListIterator in der Liste zurück

remove(): Entfernt das letzte von next() oder previous() zurückgegebene Element aus der Liste (etwas verwirrend, es bedeutet die Verwendung des Iterators. Wenn Sie die hasNext()-Methode verwenden, löschen Sie das Element nach der Position, auf die ListIterator zeigt; wenn Löschen Sie mithilfe der Methode hasPrevious() im Iterator das Element vor der Position, auf die ListIterator zeigt)

set(E e): Next aus der Liste entfernen Das letzte von () oder previous() zurückgegebene Element wird geändert zum angegebenen Element e

eins. Die gleichen Punkte

sind Iteratoren. Wenn Sie die Elemente in der Sammlung durchlaufen müssen, ohne den Durchlaufprozess zu beeinträchtigen, können beide Iteratoren verwendet werden.

2. Unterschiede

1. Unterschiedlicher Verwendungsbereich, Iterator kann auf alle Sammlungen, Sets, Listen und Karten sowie Untertypen dieser Sammlungen angewendet werden. ListIterator kann nur für List und seine Untertypen verwendet werden.

2. ListIterator verfügt über eine Add-Methode, die Objekte zur Liste hinzufügen kann, Iterator jedoch nicht.

3. Sowohl ListIterator als auch Iterator verfügen über die Methoden hasNext() und next(), die einen sequentiellen Rückwärtsdurchlauf realisieren können, aber ListIterator verfügt über die Methoden hasPrevious() und previous(), die einen umgekehrten (sequentiellen Vorwärtsdurchlauf) realisieren können . . Iterator kann nicht.

4.ListIterator kann die Position des aktuellen Index ermitteln, und nextIndex() und previousIndex() können dies erreichen. Iterator verfügt nicht über diese Funktionalität.

5. Beide können Löschvorgänge implementieren, ListIterator kann jedoch Objektänderungen implementieren, und die set()-Methode kann dies erreichen. Der Iterator kann nur durchlaufen und nicht geändert werden.

Drei: Iterator- und ListIterator-Verwendungsbeispiele

ListIterator-Verwendung:

Paket com.collection;

import java.util.LinkedList;

import java.util.List;
java.util.ListIterator importieren;

public class ListIteratorTest {
 public static void main(String[] args) {  // TODO Auto-generated method stub  List<String> staff = new LinkedList<>();  staff.add("zhuwei");  staff.add("xuezhangbin");  staff.add("taozhiwei");  ListIterator<String> iter = staff.listIterator();  String first = iter.next();    //删除zhuwei  iter.remove();    //把zhuwei改为simei  //iter.set("simei");  System.out.println("first:"+first);    iter.add("xiaobai");    //遍历List元素  System.out.println("遍历List中元素,方法一:");  for(String str : staff)   System.out.println(str+"  ");    iter = staff.listIterator();  System.out.println("遍历List中元素,方法二:");  while(iter.hasNext())  {   System.out.println(iter.next());  } }
}
Nach dem Login kopieren


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage