A listán történő iterálás módjai a Java-ban

1. Bemutatkozás

A lista elemein való ismétlés az egyik leggyakoribb feladat a programban.

Ebben az oktatóanyagban áttekintjük ennek különböző módjait a Java-ban. Arra fogunk összpontosítani, hogy a listán keresztül sorrendben végigvigyük az iterációt, bár a fordított irányú mozgás is egyszerű.

2. mert Hurok

Először nézzünk át néhányat mert loop opciók.

Kezdjük azzal, hogy meghatározzuk az országok listáját a példáinkhoz:

Országok felsorolása = Arrays.asList ("Németország", "Panama", "Ausztrália");

2.1. Alapvető mert Hurok

Az iterációhoz a leggyakoribb áramlásszabályozási utasítás az alap mert hurok.

A mert a hurok pontosvesszővel elválasztott utasítások három típusát határozza meg. Az első utasítás az inicializáló utasítás. A második meghatározza a felmondási feltételt. Az utolsó állítás a frissítési záradék.

Itt egyszerűen egész változót használunk indexként:

for (int i = 0; i <országok.méret (); i ++) {System.out.println (országok.get (i)); }

Az inicializáláskor egy egész változót kell deklarálnunk a kiindulási pont megadásához. Ez a változó általában listaindexként működik.

A lezárási feltétel egy olyan kifejezés, amely az értékelés után logikai értéket ad vissza, amint ez a kifejezés erre értékel hamis a hurok befejeződik.

A frissítési záradék az indexváltozó jelenlegi állapotának módosítására szolgál, növelve vagy csökkentve a befejezésig.

2.2. Fokozott mert Hurok

A továbbfejlesztett mert A loop egy egyszerű szerkezet, amely lehetővé teszi számunkra, hogy meglátogassuk a lista minden elemét. Hasonló a loop for basic-hez, de olvashatóbb és kompaktabb. Következésképpen ez az egyik leggyakrabban használt forma a lista áthaladásához.

Figyeljük meg, hogy a továbbfejlesztett mert hurok egyszerűbb, mint az alap mert hurok:

for (Sztring ország: országok) {System.out.println (ország); }

3. Iterátorok

An Iterátor olyan tervezési minta, amely szabványos felületet kínál számunkra az adatszerkezet áthaladásához anélkül, hogy aggódnunk kellene a belső ábrázolás miatt.

Az adatstruktúrák bejárásának ez a módja számos előnyt kínál, amelyek közül kiemelhetjük, hogy kódunk nem a megvalósítástól függ.

Ezért a szerkezet lehet bináris fa vagy kétszeresen összekapcsolt lista a Iterátor elvonatkoztat minket a bejárás végrehajtásának módjáról. Ily módon kellemetlen problémák nélkül könnyen kicserélhetjük kódunk adatstruktúráit.

3.1. Iterátor

Java-ban az Iterátor minta tükröződik a java.util.Iterator osztály. Széles körben használják a Java-ban Gyűjtemények. Két kulcs módszer létezik egy Iterátor, a hasNext () és következő() mód.

Itt bemutatjuk mindkettő használatát:

Iterátor országokIterátor = országok.iterátor (); while (országokIterator.hasNext ()) {System.out.println (országokIterator.next ()); }

A hasNext () módszer ellenőrzi, hogy maradt-e elem a listában.

A következő() módszer az iteráció következő elemét adja vissza.

3.2. ListIterator

A ListIterator lehetővé teszi, hogy előre vagy hátra sorrendben haladjunk az elemek listáján.

Lista görgetése a gombbal ListIterator az előrehozás hasonló mechanizmust követ, mint a Iterátor. Ily módon az iterátort előre mozgathatjuk a következő() módszerrel, és a lista végén megtalálhatjuk a hasNext () módszer.

Mint láthatjuk, a ListIterator nagyon hasonlít a Iterátor amit korábban használtunk:

ListIterator listIterator = országok.listIterator (); while (listIterator.hasNext ()) {System.out.println (listIterator.next ()); }

4. az egyes()

4.1. Iterable.forEach ()

Java 8 óta használhatjuk a az egyes() módszer a lista elemein való iteráláshoz. Ezt a módszert a Iterálható interfész és paraméterként elfogadhatja a Lambda kifejezéseket.

A szintaxis nagyon egyszerű:

országok.forEach (System.out :: println);

Előtte az egyes függvényben a Java összes iterátora aktív volt, vagyis egy vagy egy ideig részt vett egy hurokban, amely végigjárta az adatgyűjtést egy bizonyos feltétel teljesüléséig.

Bevezetésével az egyes függvényében a Iterálható interfész, az összes osztály, amely megvalósítja Iterálható megvan a az egyes funkció hozzáadva.

4.2. Stream.forEach ()

Az értékek gyűjteményét Stream-be is konvertálhatjuk, és hozzáférhetünk olyan műveletekhez, mint a az egyes(), térkép(), vagy szűrő().

Itt bemutatjuk a folyamok tipikus használatát:

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

5. Következtetés

Ebben a cikkben bemutattuk a lista elemeinek a Java API használatával történő iterálásának különböző módjait. Ezek között megemlítettük a mert hurok, a továbbfejlesztett mert hurok, a Iterátor, a ListIterator és a az egyes() módszer (benne van a Java 8-ban).

Ezen felül megmutattuk a az egyes() módszerrel Patakok.

Végül az ebben a cikkben használt összes kód elérhető a Github repóban.