


Eine detaillierte Einführung in die Iterator-Schnittstelle und die LIstIterator-Schnittstelle in Java
In diesem Artikel werden hauptsächlich die relevanten Informationen zur Java-Iterator-Schnittstelle und zur LIstIterator-Schnittstellenanalyse vorgestellt >Java-Iterator-Schnittstelle und LIstIterator-Schnittstellenanalyse
Verzeichnis
1.Iterator-Schnittstelle2.ListIterator
3.Iterator und Der Unterschied zwischen ListIterator
Text
Bevor Sie sich den Array
List-Quellcode ansehen, sollten Sie zunächst die Iterator-Schnittstelle und die ListIterator-Schnittstelle verstehen. Im nächsten Artikel wird ArrayList ausführlich erläutert, wie man sie implementiert.Wir wissen, dass eine Schnittstelle nur eine Spezifikation ist. Wenn die Schnittstelle
erbt und ihre Methoden implementiert, muss die Beschreibung der Methoden der Schnittstelle befolgt werden.Die Iterator-Schnittstelle ersetzt das Enumeratrion im Java-Collection-
-Framework
Der Iterator-Quellcode lautet wie folgt:
Die Iterator-Schnittstelle definiert vier Methoden und die Funktionen jeder Methode. Wenn eine Klasse diese Schnittstelle implementiert, implementiert sie diese Methode, diese Methode muss die definierte Funktion implementieren und diese Regeln befolgen:
/** * An iterator over a collection. {@code Iterator} takes the place of * {@link Enumeration} in the Java Collections Framework. Iterators * differ from enumerations in two ways: * Iterators allow the caller to remove elements from the underlying collection during the iteration with well-defined semantics. * Method names have been improved. * This interface is a member of the Java Collections Framework. * @param <E> the type of elements returned by this iterator*/ public interface Iterator<E> { /** * Returns {@code true} if the iteration has more elements. * (In other words, returns {@code true} if {@link #next} would * return an element rather than throwing an exception.) * @return {@code true} if the iteration has more elements */ boolean hasNext(); /** * Returns the next element in the iteration. * @return the next element in the iteration * @throws NoSuchElementException if the iteration has no more elements */ E next(); /** * Removes from the underlying collection the last element returned * by this iterator (optional operation). This method can be called * only once per call to {@link #next}. The behavior of an iterator * is unspecified if the underlying collection is modified while the * iteration is in progress in any way other than by calling this * method. * * @implSpec * The default implementation throws an instance of * {@link UnsupportedOperationException} and performs no other action. * * @throws UnsupportedOperationException if the {@code remove} * operation is not supported by this iterator * * @throws IllegalStateException if the {@code next} method has not * yet been called, or the {@code remove} method has already * been called after the last call to the {@code next} * method */ default void remove() { throw new UnsupportedOperationException("remove"); } /** * Performs the given action for each remaining element until all elements * have been processed or the action throws an exception. Actions are * performed in the order of iteration, if that order is specified. * Exceptions thrown by the action are relayed to the caller. * * @implSpec * <p>The default implementation behaves as if: * <pre class="brush:php;toolbar:false">{@code * while (hasNext()) * action.accept(next()); * }* * @param action The action to be performed for each element * @throws NullPointerException if the specified action is null * @since 1.8 */ default void forEachRemaining(Consumer super E> action) { Objects.requireNonNull(action); while (hasNext()) action.accept(next()); } }
Kommentare im Quellcode.
ListIterator bietet add, set,
prev
Der Quellcode von ListIterator lautet wie folgt:
ListIterator ist leistungsfähiger und die definierten Methoden sind: 1).hasNext( ) vorwärts Wenn es ein nächstes Element gibt, gib true zurück
/** * An iterator for lists that allows the programmer * to traverse the list in either direction, modify * the list during iteration, and obtain the iterator's * current position in the list. A {@code ListIterator} * has no current element; its <I>cursor position</I> always * lies between the element that would be returned by a call * to {@code previous()} and the element that would be * returned by a call to {@code next()}. * An iterator for a list of length {@code n} has {@code n+1} possible * cursor positions, as illustrated by the carets ({@code ^}) below: * <PRE> * Element(0) Element(1) Element(2) ... Element(n-1) * cursor positions: ^ ^ ^ ^ ^ ** Note that the {@link #remove} and {@link #set(Object)} methods are * not defined in terms of the cursor position; they are defined to * operate on the last element returned by a call to {@link #next} or * {@link #previous()}. * * This interface is a member of the Java Collections Framework.*/ public interface ListIterator
5).nextIndex() gibt den
-Index des Elements zurück, das zu diesem Zeitpunkt zurückgegeben wird, wenn die next()-Methode aufgerufen wird.
6). previousIndex() gibt den Index zurück des Elements, das zu diesem Zeitpunkt zurückgegeben wird, wenn die Methode previous() aufgerufen wird;
7).remove() entfernt das Element, das vom letzten Aufruf der Methode next() oder previous() zurückgegeben wurde (optional);
8).set(E e) Verwenden Sie Element e, um festzulegen, ob dies das zurückgegebene Element ersetzt, indem Sie die Methode next() oder previous() aufrufen 9).add(E e) Fügen Sie ein Element vor dem zurückgegebenen Element hinzu, indem Sie zu diesem Zeitpunkt next() aufrufen, oder rufen Sie zu diesem Zeitpunkt previous() auf, nachdem das Element zurückgegeben wurde.
Für detailliertere Anweisungen lesen Sie bitte die Kommentare im Quellcode.
3. Der Unterschied zwischen Iterator und ListIterator Die Methoden von Iterator und ListIterator werden in der folgenden Tabelle verglichen:Iterator | ListIterator | |||||||||||||||||||||||||||||||||
hasNext() |
hasNext() | Override | ||||||||||||||||||||||||||||||||
next( ) |
next() | override | ||||||||||||||||||||||||||||||||
| remove()Override | |||||||||||||||||||||||||||||||||
forEachRemaining(Consumer super E> action) td> | forEachRemaining(Consumer super E> action) | Inherited | ||||||||||||||||||||||||||||||||
hasPrevious() | ||||||||||||||||||||||||||||||||||
previous() | ||||||||||||||||||||||||||||||||||
nextIndex() | ||||||||||||||||||||||||||||||||||
previousIndex() | ||||||||||||||||||||||||||||||||||
set(E e) | ||||||||||||||||||||||||||||||||||
add(E e ) |
Die Hauptunterschiede zwischen den beiden sind:
2).ListIterator kann Elementelöschen
, ersetzen oder hinzufügen, während Iterator nur löschen kann elements; 3).ListIterator kann den Index des aktuellen Elements zurückgeben (zurückgegeben durch Aufruf von next() oder previous()), Iterator jedoch nicht.Das obige ist der detaillierte Inhalt vonEine detaillierte Einführung in die Iterator-Schnittstelle und die LIstIterator-Schnittstelle in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Leitfaden zur perfekten Zahl in Java. Hier besprechen wir die Definition, Wie prüft man die perfekte Zahl in Java?, Beispiele mit Code-Implementierung.

Leitfaden für Weka in Java. Hier besprechen wir die Einführung, die Verwendung von Weka Java, die Art der Plattform und die Vorteile anhand von Beispielen.

Leitfaden zur Smith-Zahl in Java. Hier besprechen wir die Definition: Wie überprüft man die Smith-Nummer in Java? Beispiel mit Code-Implementierung.

In diesem Artikel haben wir die am häufigsten gestellten Fragen zu Java Spring-Interviews mit ihren detaillierten Antworten zusammengestellt. Damit Sie das Interview knacken können.

Java 8 führt die Stream -API ein und bietet eine leistungsstarke und ausdrucksstarke Möglichkeit, Datensammlungen zu verarbeiten. Eine häufige Frage bei der Verwendung von Stream lautet jedoch: Wie kann man von einem Foreach -Betrieb brechen oder zurückkehren? Herkömmliche Schleifen ermöglichen eine frühzeitige Unterbrechung oder Rückkehr, aber die Stream's foreach -Methode unterstützt diese Methode nicht direkt. In diesem Artikel werden die Gründe erläutert und alternative Methoden zur Implementierung vorzeitiger Beendigung in Strahlverarbeitungssystemen erforscht. Weitere Lektüre: Java Stream API -Verbesserungen Stream foreach verstehen Die Foreach -Methode ist ein Terminalbetrieb, der einen Vorgang für jedes Element im Stream ausführt. Seine Designabsicht ist

Anleitung zum TimeStamp to Date in Java. Hier diskutieren wir auch die Einführung und wie man Zeitstempel in Java in ein Datum konvertiert, zusammen mit Beispielen.

Kapseln sind dreidimensionale geometrische Figuren, die aus einem Zylinder und einer Hemisphäre an beiden Enden bestehen. Das Volumen der Kapsel kann berechnet werden, indem das Volumen des Zylinders und das Volumen der Hemisphäre an beiden Enden hinzugefügt werden. In diesem Tutorial wird erörtert, wie das Volumen einer bestimmten Kapsel in Java mit verschiedenen Methoden berechnet wird. Kapselvolumenformel Die Formel für das Kapselvolumen lautet wie folgt: Kapselvolumen = zylindrisches Volumenvolumen Zwei Hemisphäre Volumen In, R: Der Radius der Hemisphäre. H: Die Höhe des Zylinders (ohne die Hemisphäre). Beispiel 1 eingeben Radius = 5 Einheiten Höhe = 10 Einheiten Ausgabe Volumen = 1570,8 Kubikeinheiten erklären Berechnen Sie das Volumen mithilfe der Formel: Volumen = π × R2 × H (4

Spring Boot vereinfacht die Schaffung robuster, skalierbarer und produktionsbereiteter Java-Anwendungen, wodurch die Java-Entwicklung revolutioniert wird. Der Ansatz "Übereinkommen über Konfiguration", der dem Feder -Ökosystem inhärent ist, minimiert das manuelle Setup, Allo
