Iteracija unatrag kroz popis
1. Pregled
U ovom brzom vodiču naučit ćemo o raznim načinima na koje se možemo vraćati unatrag kroz popis na Javi.
2. Iterator na Javi
An Iterator je sučelje u okviru Java Collections Framework koje nam omogućuje prelazak preko elemenata u zbirci. Uveden je u Javi 1.2 kao zamjena za Nabrajanje.
3. Iteracija unatrag korištenjem jezgre Java
3.1. Obrnuto za Petlja
Najjednostavnija implementacija je korištenje a za petlja do krenite od zadnjeg elementa popisa i smanjite indeks kako dolazimo do početka popisa:
for (int i = list.size (); i--> 0;) {System.out.println (list.get (i)); }
3.2. ListIterator
Možemo koristiti a ListIterator za prelazak preko elemenata na popisu.
Pružanje veličine popisa kao indeksa za ListIterator dat će nam iterator koji pokazuje na kraj popisa:
ListIterator listIterator = list.listIterator (list.size ());
Ovaj nam iterator sada omogućuje prelazak popisa u obrnutom smjeru:
while (listIterator.hasPrevious ()) {System.out.println (listIterator.previous ()); }
3.3. Collections.reverse ()
The Zbirke klasa u Javi pruža statičku metodu za preokretanje redoslijeda elemenata na navedenom popisu:
Collections.reverse (popis);
Tada se obrnuti popis može koristiti za prevrtanje unatrag preko izvornih elemenata:
za (String stavka: popis) {System.out.println (stavka); }
Ova metoda, međutim, preokreće stvarni popis promjenom redoslijeda elemenata na mjestu, a možda nije poželjno u mnogim slučajevima.
4. Iteracija unatrag pomoću Apachea ReverseListIterator
The Zbirke Apache Commons knjižnica ima lijep ReverseListIterator klasa koja nam omogućuje da petljamo kroz elemente na popisu, a da ga zapravo ne preokrenemo.
Prije nego što započnemo, moramo iz Maven Central uvesti najnovije ovisnosti:
org.apache.commons commons-collection4 4.1
Možemo stvoriti novo ReverseListIterator prosljeđivanjem izvornog popisa kao parametra konstruktora:
ReverseListIterator reverseListIterator = novi ReverseListIterator (popis);
Tada ovaj iterator možemo koristiti za prelazak popisa unatrag:
while (reverseListIterator.hasNext ()) {System.out.println (reverseListIterator.next ()); }
5. Iteracija unatrag pomoću Guave Lists.reverse ()
Slično tome, Google Guava knjižnica također nudi statički podatak obrnuti () metoda u svom Popisi razred koji vraća obrnuti prikaz navedenog popisa.
Najnoviju verziju Guave možete pronaći na Maven Central:
com.google.guava guava 25.0
Pozivanje na statičku metodu obrnuti () na Popisi klasa daje nam popis na obrnut način:
Popis reversedList = Lists.reverse (popis);
Tada se obrnuti popis može koristiti za vraćanje unatrag preko izvornog popisa:
za (String stavka: reversedList) {System.out.println (stavka); }
Ova metoda vraća novi popis s elementima izvornog popisa obrnutim redoslijedom.
6. Zaključak
U ovom smo članku pogledali različite načine unatrag kroz popis na Javi. Prošli smo kroz nekoliko primjera korištenja jezgre Java, kao i korištenja popularnih neovisnih knjižnica.
Izvorni kôd za ovaj članak i relevantni testovi dostupni su na GitHubu.