Egy listán keresztül visszafelé iterálva
1. Áttekintés
Ebben a gyors oktatóanyagban megismerkedhetünk a Java-ban található listán keresztüli visszafelé történő iterálás különféle módjaival.
2. Iterátor Java-ban
An Iterátor egy olyan felület a Java Collections Framework-ben, amely lehetővé teszi számunkra, hogy iteráljunk a gyűjtemény elemein. A Java 1.2-ben helyettesítették Felsorolás.
3. Visszafelé ismétlés a Core Java használatával
3.1. Megfordítva mert Hurok
A legegyszerűbb megvalósítás az a használata mert hurok ahhoz kezdje a lista utolsó elemétől, és csökkentse az indexet amint elérjük a lista elejét:
for (int i = list.size (); i--> 0;) {System.out.println (list.get (i)); }
3.2. ListIterator
Használhatjuk a ListIterator hogy a lista elemei között ismétlődjünk.
A lista méretének megadása indexként a ListIterator iterátort ad a lista végére:
ListIterator listIterator = list.listIterator (list.size ());
Ez az iterátor lehetővé teszi, hogy a listát fordított irányban haladjuk:
while (listIterator.hasPrevious ()) {System.out.println (listIterator.previous ()); }
3.3. Collections.reverse ()
A Gyűjtemények osztály a Java-ban statikus módszert biztosít a megadott listában szereplő elemek sorrendjének megfordítására:
Gyűjtemények.fordítva (lista);
Ezután a megfordított lista felhasználható az eredeti elemek visszafelé történő ismétlésére:
a (String item: list) {System.out.println (elem); }
Ez a módszer azonban megfordítja a tényleges listát az elemek helyének sorrendjének megváltoztatásával, és sok esetben nem lehet kívánatos.
4. Visszafelé ismétlés az Apache-ok használatával ReverseListIterator
A Apache Commons Gyűjtemények a könyvtárnak szép ReverseListIterator osztály, amely lehetővé teszi számunkra, hogy végignézzük a lista elemeit anélkül, hogy valóban megfordítanánk.
Mielőtt elkezdenénk, be kell importálnunk a legújabb függőségeket a Maven Centralból:
org.apache.commons commons-gyűjtemények4 4.1
Készíthetünk újat ReverseListIterator az eredeti lista konstruktorparaméterként való átadásával:
ReverseListIterator reverseListIterator = új ReverseListIterator (lista);
Ezután ezt az iterátort használhatjuk a lista hátralépéséhez:
while (reverseListIterator.hasNext ()) {System.out.println (reverseListIterator.next ()); }
5. Iterálás visszafelé a Guava használatával Lists.reverse ()
Hasonlóképpen a A Google Guava könyvtár szintén statikus fordított() módszer annak Listák osztály amely a megadott lista fordított nézetét adja vissza.
A Guava legújabb verziója megtalálható a Maven Central oldalán:
com.google.guava guava 25.0
A statikus módszer meghívása fordított() a Listák osztály fordított módon adja meg a listát:
List reversedList = Lists.reverse (lista);
Ezután a megfordított lista felhasználható az eredeti lista visszafelé történő ismétlésére:
for (String item: reversedList) {System.out.println (elem); }
Ez a módszer új listát ad vissza az eredeti lista elemeivel fordított sorrendben.
6. Következtetés
Ebben a cikkben a visszafelé történő iterálás különböző módjait vizsgáltuk meg a Java-listán keresztül. Végigvizsgáltunk néhány példát az alapvető Java használatával, valamint a népszerű, harmadik féltől származó könyvtárak használatával.
A cikk és a vonatkozó tesztesetek forráskódja elérhető a GitHub oldalon.