Iterácia dozadu zoznamom

1. Prehľad

V tomto rýchlom výučbe sa dozvieme o rôznych spôsoboch, ako môžeme iterovať dozadu zoznamom v jazyku Java.

2. Iterátor v Jave

An Iterátor je rozhranie v rámci Java Collections Framework, ktoré nám umožňuje iterovať cez prvky v kolekcii. Bol predstavený v prostredí Java 1.2 ako náhrada za Vymenovanie.

3. Iterácia dozadu pomocou Core Java

3.1. Obrátené pre Slučka

Najjednoduchšou implementáciou je použitie a pre slučka do začať od posledného prvku zoznamu a zmenšovať index keď sa dostaneme na začiatok zoznamu:

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

3.2. ListIterator

Môžeme použiť a ListIterator iterovať nad prvkami v zozname.

Poskytuje sa veľkosť zoznamu ako index indexu ListIterator dá nám iterátor smerujúci na koniec zoznamu:

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

Tento iterátor nám teraz umožňuje prechádzať zoznamom v opačnom smere:

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

3.3. Collections.reverse ()

The Zbierky trieda v Jave poskytuje statickú metódu na obrátenie poradia prvkov v zadanom zozname:

Zbierky.Reverzný (zoznam);

Obrátený zoznam potom možno použiť na iteráciu dozadu nad pôvodné prvky:

pre (Položka reťazca: zoznam) {System.out.println (položka); }

Táto metóda však obráti skutočný zoznam zmenou poradia prvkov na mieste, a v mnohých prípadoch nemusí byť žiaduce.

4. Iterácia dozadu pomocou Apache ReverseListIterator

The Zbierky Apache Commons knižnica má pekný ReverseListIterator trieda, ktorá nám umožňuje prechádzať prvkami v zozname bez toho, aby sme ich skutočne obrátili.

Než začneme, musíme importovať najnovšie závislosti z Maven Central:

     org.apache.commons commons-collections4 4.1 

Môžeme vytvoriť nový ReverseListIterator odovzdaním pôvodného zoznamu ako parametra konštruktora:

ReverseListIterator reverseListIterator = nový ReverseListIterator (zoznam);

Potom môžeme pomocou tohto iterátora prechádzať zoznamom dozadu:

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

5. Iterácia dozadu pomocou Guava Lists.reverse ()

Podobne Knižnica Google Guava poskytuje aj statické údaje reverz () metóda v jeho Zoznamy trieda ktorý vráti spätný pohľad na poskytnutý zoznam.

Najnovšiu verziu Guava nájdete na serveri Maven Central:

     com.google.guava guava 25.0 

Vyvolanie statickej metódy reverz () na Zoznamy trieda nám dáva zoznam obrátene:

List reversedList = Lists.reverse (list);

Obrátený zoznam potom možno použiť na iteráciu dozadu nad pôvodný zoznam:

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

Táto metóda vráti nový zoznam s prvkami pôvodného zoznamu v opačnom poradí.

6. Záver

V tomto článku sme sa zaoberali rôznymi spôsobmi iterácie dozadu zoznamom v prostredí Java. Prešli sme si niekoľkými príkladmi použitia základnej verzie Java, ako aj použitia populárnych knižníc tretích strán.

Zdrojový kód tohto článku a príslušné testovacie prípady sú k dispozícii na stránkach GitHub.