Rückwärts durch eine Liste

Rückwärts durch eine Liste iterieren

1. Überblick

In diesem kurzen Tutorial lernen wir verschiedene Möglichkeiten kennen, wie wir eine Liste in Java rückwärts durchlaufen können.

2. Iterator in Java

EinIterator ist eine Schnittstelle inJava Collections Framework, mit der wir die Elemente in einer Sammlung durchlaufen können. Es wurde in Java 1.2 als Ersatz fürEnumeration eingeführt

3. Rückwärts iterieren mit Core Java

3.1. Umgekehrtefor Schleife

Die einfachste Implementierung besteht darin, einefor-Schleife zustart from the last element of the list, and decrement the index zu verwenden, wenn wir den Anfang der Liste erreichen:

for (int i = list.size(); i-- > 0; ) {
    System.out.println(list.get(i));
}

3.2. ListIterator

Wir können einListIterator verwenden, um über die Elemente in der Liste zu iterieren.

Wenn Sie die Größe der Liste als Index fürListIterator angeben, erhalten Sie einen Iterator, der auf das Ende der Liste zeigt:

ListIterator listIterator = list.listIterator(list.size());

Mit diesem Iterator können wir die Liste nun in umgekehrter Richtung durchlaufen:

while (listIterator.hasPrevious()) {
    System.out.println(listIterator.previous());
}

3.3. Collections.reverse()

Die KlasseCollectionsin Java bietet eine statische Methode zum Umkehren der Reihenfolge der Elemente in einer angegebenen Liste:

Collections.reverse(list);

Die umgekehrte Liste kann dann verwendet werden, um die ursprünglichen Elemente rückwärts zu durchlaufen:

for (String item : list) {
    System.out.println(item);
}

Dieses Verfahren beträgt jedochreverses the actual list by changing the order of elements in-place und ist in vielen Fällen möglicherweise nicht wünschenswert.

4. Rückwärts iterieren mit ApachesReverseListIterator

DieApache Commons Collections-Bibliothek hat eine schöneReverseListIterator-Klasse, mit der wir die Elemente in einer Liste durchlaufen können, ohne sie tatsächlich umzukehren.

Bevor wir beginnen, müssen wir die neuesten Abhängigkeiten ausMaven Central importieren:


    org.apache.commons
    commons-collections4
    4.1

Wir können ein neuesReverseListIterator erstellen, indem wir die ursprüngliche Liste als Konstruktorparameter übergeben:

ReverseListIterator reverseListIterator = new ReverseListIterator(list);

Wir können dann diesen Iterator verwenden, um die Liste rückwärts zu durchlaufen:

while (reverseListIterator.hasNext()) {
    System.out.println(reverseListIterator.next());
}

5. Rückwärts iterieren mit GuavasLists.reverse()

Ebenso dasGoogle Guava library also provides a static reverse() method in its Lists class, das eine umgekehrte Ansicht der bereitgestellten Liste zurückgibt.

Die neueste Guava-Version finden Sie überMaven Central:


    com.google.guava
    guava
    25.0

Wenn Sie die statische Methodereverse() für die KlasseLists aufrufen, erhalten Sie die Liste in umgekehrter Reihenfolge:

List reversedList = Lists.reverse(list);

Die umgekehrte Liste kann dann verwendet werden, um die ursprüngliche Liste rückwärts zu durchlaufen:

for (String item : reversedList) {
    System.out.println(item);
}

Diese Methodereturns a new list with the elements of the original list in reversed order.

6. Fazit

In diesem Artikel haben wir uns verschiedene Möglichkeiten angesehen, wie Sie eine Liste in Java rückwärts durchlaufen können. Wir haben einige Beispiele unter Verwendung von Kern-Java sowie unter Verwendung beliebter Bibliotheken von Drittanbietern durchgearbeitet.

Der Quellcode für diesen Artikel und die relevanten Testfälle sind inover on GitHub verfügbar.