Iterere bakover gjennom en liste

1. Oversikt

I denne raske opplæringen lærer vi om forskjellige måter vi kan gjenta bakover gjennom en liste i Java.

2. Iterator i Java

An Iterator er et grensesnitt i Java Collections Framework som lar oss itere over elementene i en samling. Den ble introdusert i Java 1.2 som erstatning for Oppregning.

3. Iterere bakover ved hjelp av Core Java

3.1. Omvendt til Løkke

Den mest enkle implementeringen er å bruke en til løkke til start fra det siste elementet i listen, og reduser indeksen når vi når begynnelsen av listen:

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

3.2. ListIterator

Vi kan bruke en ListIterator for å gjenta elementene i listen.

Tilbyr størrelsen på listen som en indeks til ListIterator vil gi oss en iterator som peker mot slutten av listen:

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

Denne iteratoren lar oss nå krysse listen i motsatt retning:

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

3.3. Collections.reverse ()

De Samlinger klasse i Java gir en statisk metode for å reversere rekkefølgen på elementene i en spesifisert liste:

Collections.reverse (liste);

Den omvendte listen kan deretter brukes til å gjenta bakover over de opprinnelige elementene:

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

Denne metoden, reverserer den faktiske listen ved å endre rekkefølgen på elementene på plass, og er kanskje ikke ønskelig i mange tilfeller.

4. Iterere bakover ved hjelp av Apache ReverseListIterator

De Apache Commons samlinger biblioteket har en fin ReverseListIterator klasse som lar oss løpe gjennom elementene i en liste uten å faktisk reversere den.

Før vi begynner, må vi importere de siste avhengighetene fra Maven Central:

     org.apache.commons commons-collection4 4.1 

Vi kan lage et nytt ReverseListIterator ved å sende den opprinnelige listen som en konstruktorparameter:

ReverseListIterator reverseListIterator = ny ReverseListIterator (liste);

Vi kan deretter bruke denne iteratoren til å krysse listen bakover:

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

5. Iterere bakover ved hjelp av guava Lists.reverse ()

Tilsvarende Google Guava-biblioteket gir også en statisk omvendt() metoden i sin Lister klasse som returnerer en omvendt visning av den angitte listen.

Den siste Guava-versjonen finner du på Maven Central:

     com.google.guava guava 25.0 

Påkaller den statiske metoden omvendt()Lister klasse gir oss listen på en omvendt måte:

List reversedList = Lists.reverse (liste);

Den omvendte listen kan deretter brukes til å gjenta bakover over den opprinnelige listen:

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

Denne metoden returnerer en ny liste med elementene i den opprinnelige listen i omvendt rekkefølge.

6. Konklusjon

I denne artikkelen har vi sett på forskjellige måter å iterere bakover gjennom en liste i Java. Vi gikk gjennom noen eksempler ved hjelp av kjernen i Java, samt brukte populære tredjepartsbiblioteker.

Kildekoden for denne artikkelen og de aktuelle testtilfellene er tilgjengelig på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found