listiterator interface java with examples
In diesem Lernprogramm wird die ListIterator-Schnittstelle in Java zum Durchlaufen von Listenimplementierungen erläutert. Sie erfahren mehr über das Klassendiagramm und die Methoden der ListIterator-Schnittstelle:
Genau wie Iterator bietet die ListIterator-Schnittstelle die Funktionalität, die Listenimplementierungen in Java zu durchlaufen und auf die Elemente der Liste zuzugreifen.
=> Hier finden Sie A-Z der Java-Schulungsanleitungen.
Was du lernen wirst:
ListIterator-Schnittstelle In Java
Einige der Hauptmerkmale der ListIterator-Schnittstelle sind nachfolgend aufgeführt:
- ListIterator wurde in Java 1.2 eingeführt
- ListIterator ist eine Unterschnittstelle der Iterator-Schnittstelle, d. H. Sie erstreckt sich von der Iterator-Schnittstelle.
- ListIterator funktioniert nur mit Listenimplementierungen.
- ListIterator unterstützt alle Vorgänge, nämlich Erstellen, Lesen, Aktualisieren und Löschen. (Zusammen CRUD-Operationen genannt).
- ListIterator ist ein bidirektionaler Iterator und unterstützt Iteratoren in Vorwärts- und Rückwärtsrichtung.
- Im Fall von ListIterator gibt es kein aktuelles Element. Die Cursorposition zeigt auf die Position zwischen dem von der vorherigen () -Methode zurückgegebenen Element und dem von der next () -Methode zurückgegebenen Element.
Weitere Informationen zu dieser Benutzeroberfläche finden Sie in diesem Lernprogramm.
ListIterator-Klassendiagramm
ListIterator ist eine Schnittstelle, die zum Collections API-Framework gehört. Diese Schnittstelle erstreckt sich von der Iterator-Schnittstelle. Neben der Vererbung der Methoden der Iterator-Schnittstelle werden auch die Methoden für bidirektionale Iterationen und CRUD-Operationen unterstützt.
Das Klassendiagramm der ListIterator-Schnittstelle ist unten dargestellt.
Die obige Abbildung zeigt das Klassendiagramm der ListIterator-Schnittstelle. Im nächsten Abschnitt werden wir jede der in der Abbildung gezeigten Methoden im Detail diskutieren.
ListIterator-Methoden
Die ListIterator-Schnittstelle bietet die folgenden Methoden, wie in der folgenden Tabelle gezeigt.
Methodenname | Prototyp | Beschreibung |
---|---|---|
entfernen() | void remove () | Entfernt das letzte Element, das entweder von der next () - oder der vorherigen () Methode zurückgegeben wurde. |
hasNext () | boolean hasNext () | Überprüft, ob listIterator mehr Elemente enthält, die in Vorwärtsrichtung durchlaufen werden sollen. |
Nächster() | E next () | Gibt das nächste Element in der Liste zurück. Bewegt dann den Cursor, um auf das nächste Element zu zeigen. |
hasPrevious () | boolean hasPrevious () | Überprüft, ob ListIterator mehr Elemente in Rückwärts- / Rückwärtsrichtung enthält. |
Bisherige() | E vorherige () | Gibt das vorherige Element in der Liste zurück und bewegt den Cursor rückwärts in eine Position. |
nextIndex () | int nextIndex () | Gibt den Index des Elements zurück, das beim Aufruf der next () -Methode zurückgegeben wird. |
previousIndex () | int previousIndex () | Gibt den Index des Elements zurück, das beim Aufruf der vorherigen () Methode zurückgegeben wird. |
Sieben) | Leerset (E und) | Ersetzt das letzte von der Methode next () oder previous () zurückgegebene Element durch den neuen Wert. |
addiere (E) | void add (E e) | Fügt der Liste ein neues Element hinzu. |
Als nächstes werden wir jede dieser Methoden im Detail beschreiben.
# 1) hasNext ()
Prototyp: boolean hasNext ()
Parameter: NULL
Rückgabewert:
- true => list hat das nächste Element
- False => Liste enthält keine weiteren Elemente
Beschreibung: Diese Methode prüft, ob der ListIterator mehr Elemente hat, die in Vorwärtsrichtung durchlaufen werden sollen. Wenn es mehr Elemente enthält, gibt diese Methode true zurück.
# 2) next ()
Prototyp: E next ()
Parameter: NULL
Rückgabewert: E => nächstes Element in der Liste.
Beschreibung: Die next () -Methode gibt das nächste Element in der Liste zurück und bewegt den Cursor zum nächsten Element.
Ausnahme ausgelöst: NoSuchElementException - wenn der ListIterator kein nächstes Element hat.
# 3) hasPrevious ()
Prototyp: boolean hasPrevious ()
Parameter: NULL
Rückgabewert: true => Der ListIterator hat das vorherige Element
Beschreibung: Überprüft, ob ListIterator mehr Elemente in Rückwärts- / Rückwärtsrichtung enthält.
# 4) vorherige ()
Prototyp: E vorherige ()
Parameter: NULL
Rückgabewert: E => vorheriges Element in der Liste
Beschreibung: Diese Methode gibt das vorherige Element in der Liste zurück, während sie rückwärts fährt, und bewegt dann den Cursor rückwärts.
Ausnahme ausgelöst: NoSuchElementException - wenn der ListIterator kein nächstes Element hat.
# 5) nextIndex ()
Prototyp: int nextIndex ()
Parameter: NULL
Rückgabewert: int => Index des Elements, das von der next () -Methode oder der Größe der Liste zurückgegeben wird, wenn sich ListIterator am Ende der Liste befindet.
Beschreibung: Diese Methode kann vor der next () -Methode aufgerufen werden. Die nextIndex () -Methode gibt den Index des Elements zurück, das von der next () -Methode zurückgegeben wird. Befindet sich der ListIterator am Ende der Liste, gibt diese Methode die Listengröße zurück.
# 6) previousIndex ()
Prototyp: int previousIndex ()
Parameter: NULL
Rückgabewert: int => Index des Elements, das von der vorherigen () Methode zurückgegeben wird, oder -1, wenn sich ListIterator am Anfang der Liste befindet.
Beschreibung: Diese Methode kann vor der vorherigen () Methode aufgerufen werden. Die previousIndex () -Methode gibt den Index des Elements zurück, das von der previous () -Methode zurückgegeben wird. Befindet sich der ListIterator am Anfang der Liste, gibt die Methode -1 zurück.
# 7) entferne ()
Prototyp: void remove ()
Parameter: NULL
Rückgabewert: Leere
Beschreibung: Die remove () -Methode löscht das letzte Element, das entweder von der vorherigen () oder der nächsten () Methode zurückgegeben wurde. Der Aufruf der Methode remove () kann nur einmal pro Aufruf der next () oder previous () -Methode erfolgen.
Ausnahme ausgelöst:
- UnsupportedOperationException - ListIterator unterstützt keine Entfernungsoperation.
- IllegalStateException - Wenn sich die aktuelle Operation im Status 'Illegal' befindet, d. H. Weder noch 'next' oder 'previous' noch aufgerufen wurden, oder nach dem Aufruf von 'next' oder 'previous', wurde 'add' oder 'remove' nicht aufgerufen.
# 8) setze (E)
Prototyp: Leerset (E und)
Parameter: e => neues Element, durch das das alte Element ersetzt werden soll
Rückgabewert: Leere
Beschreibung: Die Methode set () setzt das von der vorherigen () oder der nächsten () Methode zurückgegebene Element mit dem neuen Wert, der als Argument übergeben wird. Diese Methode kann nur aufgerufen werden, wenn die Methode add () oder remove () nach dem letzten Aufruf der Methode previous () oder next () nicht aufgerufen wird.
Ausnahme ausgelöst:
- UnsupportedOperationException - ListIterator unterstützt die Set-Operation nicht.
- ClassCastException - Wenn das angegebene Element aufgrund seiner Klasse nicht hinzugefügt werden kann.
- IllegalArgumentException - Wenn das hinzugefügte Element / Argument unzulässig oder ungültig ist.
- IllegalStateException - Wenn sich die aktuelle Operation im Status 'Illegal' befindet, d. H. Noch weder next noch previous aufgerufen wurden oder nach dem Aufruf von next oder previous, wurde add oder remove noch nicht aufgerufen.
# 9) füge (E) hinzu
Prototyp: void add (E e)
Parameter: e => neues Element, das der Liste hinzugefügt werden soll
Rückgabewert: Leere
Beschreibung: Mit der Methode add () wird der Liste ein neues Element hinzugefügt. Das Element wird unmittelbar vor dem Element hinzugefügt, das das nächste () zurückgegeben hätte, falls vorhanden, und nach dem Element, das die vorherige () Methode zurückgegeben hätte.
Beachten Sie, dass durch das Hinzufügen eines Elements keine Änderung vorgenommen wird, um den Wert von next () zurückzugeben. Die vorherige () Methode gibt jedoch nur das hinzugefügte Element zurück.
Ausnahme ausgelöst:
- UnsupportedOperationException - ListIterator unterstützt die add-Methode nicht.
- ClassCastException, wenn ein angegebenes Element aufgrund seiner Klasse nicht hinzugefügt werden kann.
- IllegalArgumentException, wenn das hinzugefügte Element / Argument unzulässig oder ungültig ist.
Das folgende Java-Programm zeigt eine Demonstration aller oben genannten ListIterator-Methoden.
import java.util.*; public class Main{ public static void main(String args()){ //define list and add elements to it ListnameList=new ArrayList(); nameList.add('Savich'); nameList.add('Dane'); nameList.add('Lacey'); nameList.add(1,'James'); System.out.println('Original List:' + nameList); //define a list iterator for this list ListIterator list_itr=nameList.listIterator(); System.out.println('List elements in forward direction:'); //while there are still elements in the list, display next index and element while(list_itr.hasNext()){ System.out.println('Index:'+list_itr.nextIndex()+' Element:'+list_itr.next()); } //call set() method to set next value to 'Sally' list_itr.set('Sally'); System.out.println('
List after set('Sally'):' + nameList); //while there are elements in the list, display previous index and element System.out.println('
List elements in backward direction:'); while(list_itr.hasPrevious()){ System.out.println('Index:'+list_itr.previousIndex()+' Element:'+list_itr.previous()); } //call remove () method list_itr.remove(); System.out.println('List after remove():' + nameList); } }
Ausgabe:
ListIterator-Schnittstelle in Java-Beispielen
Sehen wir uns ein weiteres Beispiel für die Verwendung von ListIterator an. In diesem Programm haben wir eine ArrayList mit ganzzahligen Werten. Dann durchlaufen wir mit ListIterator die Liste und zeigen Listenelemente an.
Außerdem wählen wir nur gerade Elemente in der ArrayList aus und ändern ihre Werte mithilfe der ListIterator-Methoden in ungerade Zahlen.
import java.util.ArrayList; import java.util.ListIterator; public class Main { public static void main(String() args) { //define ArrayList and add values to it using for loop ArrayList intList = new ArrayList(); for (int i = 0; i <10; i++) intList.add(i+2); System.out.println('Original ArrayList:' + intList); // define the ListIterator ListIterator list_itr = intList.listIterator(); System.out.println('List elements using listIterator:'); //while list has more elements while (list_itr.hasNext()) { //retrieve next element int i = (Integer)list_itr.next(); // print the element System.out.print(i + ' '); // change only even numbers to odd by setting value = value +1 to current element if (i%2==0) { list_itr.set(i+1); // set method to change value } } System.out.println(); System.out.println('Final ArrayList of odd values:' + intList); } }
Ausgabe:
Häufig gestellte Fragen
F # 1) Was ist mit Iterator gemeint?
Antworten: Iterator ist eine Schnittstelle, die Teil des Collection-Frameworks in Java ist. Diese Schnittstelle ist im Paket java.util vorhanden. Die Iteratorschnittstelle wird verwendet, um die Sammlung von Objekten zu durchlaufen.
F # 2) Was ist eine Iterator-Schnittstelle in Java?
beste App, um jemandes Telefon auszuspionieren
Antworten: Eine Iteratorschnittstelle in Java wird anstelle von Aufzählungen verwendet, die zuvor im Java Collection Framework verwendet wurden. Die Iterator-Schnittstelle ist in Java seit Version 1.2 vorhanden.
Über diese Schnittstelle können Sie alle Java-Sammlungen durchlaufen und die Sammlungselemente verarbeiten.
F # 3) Wozu dient die listIterator () -Methode in Java?
Antworten: Die listIterator () -Methode gehört zum Paket java.util. *. Diese Methode gibt einen Listeniterator für das bestimmte Listenobjekt zurück, das es aufgerufen hat, und kann zum Durchlaufen der Listen und Zugriffselemente verwendet werden. Der listIterator funktioniert nur bei Listenimplementierungen.
F # 4) Ist der Iterator eine Klasse oder eine Schnittstelle?
Antworten: Iterator ist keine Klasse, sondern eine Schnittstelle in Java . Die Iterator-Schnittstelle kann von den anderen Klassen implementiert und zum Durchlaufen von Listen- oder Sammlungselementen verwendet werden.
F # 5) Wie viele Arten von Iteratoren gibt es in Java?
Antworten: Es gibt drei Arten von Iteratoren in Java:
- Aufzählungen: Dies ist eine Schnittstelle, über die Elemente aus Sammlungen wie Vektor, Hashtabelle usw. gelesen werden. Jedes Element ist entsprechend seiner Position in der Sammlung nummeriert.
- Iterator: Sie können diese Schnittstelle als universell bezeichnen, da Sie sie auf jedes Sammlungsobjekt anwenden können, um die Sammlung zu durchlaufen. Dies ist eine verbesserte Aufzählung mit Funktionen zum Entfernen und der Möglichkeit, ein Element zu lesen.
- ListIterator: ListIterator ist eine Schnittstelle, die die bidirektionale Iteration bereitstellt, d. H. In Vorwärts- und Rückwärtsrichtung. ListIterator funktioniert nur mit Listenimplementierungen, einschließlich LinkedList, ArrayList usw.
Fazit
Die ListIterator-Schnittstelle in Java wird von der Iterator-Schnittstelle abgeleitet. Zusätzlich zur direkten Vererbung der Methoden der Iterator-Schnittstelle führt die listIterator-Schnittstelle verschiedene eigene Methoden ein, die dem Programmierer bei der Durchführung einer bidirektionalen Iteration helfen können.
In diesem Tutorial haben wir das Klassendiagramm und die verschiedenen Methoden der ListIterator-Schnittstelle erläutert. Wir haben auch die Implementierung dieser Methoden zusammen mit den Möglichkeiten gesehen, verschiedene Listen zu durchlaufen.
=> Besuchen Sie hier, um die Java-Schulungsreihe für alle zu sehen.
Literatur-Empfehlungen
- Java Interface und Abstract Class Tutorial mit Beispielen
- JAVA-Tutorial für Anfänger: Über 100 praktische Java-Video-Tutorials
- Java-Iterator: Erfahren Sie anhand von Beispielen, wie Sie Iteratoren in Java verwenden
- Java Array Length Tutorial mit Codebeispielen
- Jagged Array In Java - Tutorial mit Beispielen
- Ein Array in Java umkehren - 3 Methoden mit Beispielen
- So sortieren Sie ein Array in Java - Tutorial mit Beispielen
- Prominente Java 8-Funktionen mit Codebeispielen