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.