Načini ponavljanja popisa na Javi

1. Uvod

Iteriranje elemenata popisa jedan je od najčešćih zadataka u programu.

U ovom uputstvu pregledat ćemo različite načine kako to učiniti na Javi. Usredotočit ćemo se na redoslijed ponavljanja popisa, premda je i obrnuto jednostavno.

2. za Petlja

Prvo, pregledajmo neke za opcije petlje.

Počnimo s definiranjem popisa zemalja za naše primjere:

Popis zemalja = Arrays.asList ("Njemačka", "Panama", "Australija");

2.1. Osnovni, temeljni za Petlja

Najčešća izjava o kontroli protoka za iteraciju je osnovna za petlja.

The za petlja definira tri vrste izraza odvojene zarezom. Prva izjava je inicijalizacijska izjava. Drugi definira uvjet raskida. Posljednja izjava je klauzula o ažuriranju.

Ovdje jednostavno koristimo cjelobrojnu varijablu kao indeks:

for (int i = 0; i <countries.size (); i ++) {System.out.println (countries.get (i)); }

U inicijalizaciji moramo proglasiti cjelobrojnu varijablu da odredimo polaznu točku. Ova varijabla obično djeluje kao indeks popisa.

Uvjet prekida je izraz koji nakon evaluacije vraća logičku vrijednost, nakon što ovaj izraz procijeni na lažno petlja završava.

Klauzula ažuriranja koristi se za izmjenu trenutnog stanja varijable indeksa, povećavajući je ili smanjujući do točke prekida.

2.2. Poboljšano za Petlja

Poboljšani za petlja je jednostavna struktura koja nam omogućuje da posjetimo svaki element popisa. Sličan je osnovnom ciklusu for, ali čitljiviji i kompaktniji. Slijedom toga, jedan je od najčešće korištenih oblika za prelazak popisa.

Primijetite da poboljšani za petlja je jednostavnija od osnovne za petlja:

za (Zemlja niza: države) {System.out.println (zemlja); }

3. Iteratori

An Iterator je uzorak dizajna koji nam nudi standardno sučelje za prelazak strukture podataka bez potrebe za brigom o unutarnjem predstavljanju.

Ovaj način obilaženja struktura podataka nudi brojne prednosti, među kojima možemo naglasiti da naš kod ne ovisi o implementaciji.

Stoga struktura može biti binarno stablo ili dvostruko povezan popis od Iterator apstrahira nas od načina izvođenja prelaska. Na taj način bez problema možemo bez problema zamijeniti strukture podataka u našem kodu.

3.1. Iterator

U Javi je Iterator uzorak se odražava u java.util.Iterator razred. Široko se koristi u Javi Zbirke. Postoje dvije ključne metode u Iterator, hasNext () i Sljedeći() metode.

Ovdje prikazujemo upotrebu oba:

Iterator countriesIterator = countries.iterator (); while (countriesIterator.hasNext ()) {System.out.println (countriesIterator.next ()); }

The hasNext () metoda provjerava ima li na popisu preostalih elemenata.

The Sljedeći() metoda vraća sljedeći element u iteraciji.

3.2. ListIterator

A ListIterator omogućuje nam da prelazimo popis elemenata bilo prema naprijed ili prema natrag.

Pomicanje po popisu s ListIterator prema naprijed slijedi mehanizam sličan onom koji koristi Iterator. Na taj način iterator možemo pomaknuti prema naprijed s Sljedeći() metodu, a kraj popisa možemo pronaći pomoću hasNext () metoda.

Kao što vidimo, ListIterator izgleda vrlo slično Iterator koje smo prethodno koristili:

ListIterator listIterator = countries.listIterator (); while (listIterator.hasNext ()) {System.out.println (listIterator.next ()); }

4. za svakoga()

4.1. Iterable.forEach ()

Od Jave 8 možemo koristiti za svakoga() metoda za prelazak preko elemenata popisa. Ova metoda je definirana u Iterativ sučelje i može prihvatiti Lambda izraze kao parametar.

Sintaksa je prilično jednostavna:

countries.forEach (System.out :: println);

Prije za svakoga funkcije, svi su iteratori u Javi bili aktivni, odnosno uključivali su neko vrijeme ili neko vrijeme petlju koja je prolazila kroz prikupljanje podataka dok se nije ispunio određeni uvjet.

Uvođenjem za svakoga kao funkcija u Iterativ sučelje, sve klase koje implementiraju Iterativ imati za svakoga dodana funkcija.

4.2. Stream.forEach ()

Također možemo pretvoriti zbirku vrijednosti u Stream i možemo imati pristup operacijama kao što je za svakoga(), karta(), ili filtar().

Ovdje prikazujemo tipičnu upotrebu za streamove:

countries.stream (). forEach ((c) -> System.out.println (c));

5. Zaključak

U ovom smo članku prikazali različite načine prevrtanja elemenata popisa pomoću Java API-ja. Među njima smo spomenuli za petlja, poboljšana za petlja, Iterator, ListIterator i za svakoga() metoda (uključena u Javi 8).

Osim toga, pokazali smo i kako se koristi za svakoga() metoda sa Potoci.

Napokon, sav kôd korišten u ovom članku dostupan je u našem Github repo-u.