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.