Durch eine Liste rückwärts iterieren

1. Übersicht

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

Ein Iterator ist eine Schnittstelle im Java Collections Framework, mit der wir die Elemente in einer Sammlung durchlaufen können. Es wurde in Java 1.2 als Ersatz für Enumeration eingeführt.

3. Rückwärts iterieren mit Core Java

3.1. Für Schleife umgekehrt

Die einfachste Implementierung besteht darin, eine for- Schleife zu verwenden, um vom letzten Element der Liste zu beginnen und den Index zu dekrementieren, 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 einen ListIterator verwenden , um die Elemente in der Liste zu durchlaufen .

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

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

Dieser Iterator ermöglicht es uns nun, die Liste in umgekehrter Richtung zu durchlaufen:

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

3.3. Collections.reverse ()

Die Collections- Klasse in 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); }

Diese Methode kehrt jedoch die tatsächliche Liste um, indem sie die Reihenfolge der vorhandenen Elemente ändert , und ist in vielen Fällen möglicherweise nicht wünschenswert.

4. Rückwärts iterieren mit dem ReverseListIterator von Apache

Die Apache Commons Collections- Bibliothek verfügt über eine schöne ReverseListIterator- 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 aus Maven Central importieren:

     org.apache.commons     commons-collections4     4.1 

Wir können einen neuen ReverseListIterator erstellen, indem wir die ursprüngliche Liste als Konstruktorparameter übergeben:

ReverseListIterator reverseListIterator = new ReverseListIterator(list);

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

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

5. Mit Guavas Lists.reverse () rückwärts iterieren

In ähnlicher Weise bietet die Google Guava-Bibliothek in ihrer Lists- Klasse eine statische reverse () -Methode , die eine umgekehrte Ansicht der bereitgestellten Liste zurückgibt.

Die neueste Guava-Version finden Sie auf Maven Central:

     com.google.guava     guava     25.0 

Wenn Sie die statische Methode reverse () für die Lists- Klasse 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 Methode gibt eine neue Liste mit den Elementen der ursprünglichen Liste in umgekehrter Reihenfolge zurück .

6. Fazit

In diesem Artikel haben wir uns verschiedene Möglichkeiten angesehen, eine Liste in Java rückwärts zu durchlaufen. Wir haben einige Beispiele mit Java-Kern sowie mit gängigen Bibliotheken von Drittanbietern durchgearbeitet.

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