Spôsoby iterácie nad zoznamom v jazyku Java

1. Úvod

Iterácia prvkov zoznamu je jednou z najbežnejších úloh v programe.

V tomto výučbe sa chystáme preskúmať rôzne spôsoby, ako to urobiť v prostredí Java. Zameriame sa na iteráciu zoznamu v uvedenom poradí, aj keď obrátenie je tiež jednoduché.

2. pre Slučka

Najskôr si niektoré prečítajme pre možnosti slučky.

Začnime definovaním zoznamu krajín pre naše príklady:

Zoznam krajín = Arrays.asList ("Nemecko", "Panama", "Austrália");

2.1. Základné pre Slučka

Najbežnejšie vyhlásenie o riadení toku pre iteráciu je základné pre slučka.

The pre slučka definuje tri typy príkazov oddelených bodkočiarkami. Prvým príkazom je inicializačný príkaz. Druhá definuje podmienku ukončenia. Posledným vyhlásením je doložka o aktualizácii.

Tu jednoducho používame celočíselnú premennú ako index:

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

Pri inicializácii musíme deklarovať celočíselnú premennú, aby sme určili počiatočný bod. Táto premenná zvyčajne slúži ako zoznamový index.

Podmienkou ukončenia je výraz, ktorý po vyhodnotení vráti logickú hodnotu, keď sa tento výraz vyhodnotí nepravdivé slučka končí.

Doložka o aktualizácii sa používa na úpravu aktuálneho stavu premennej indexu, jej zvyšovanie alebo znižovanie až do ukončenia.

2.2. Vylepšené pre Slučka

Vylepšené pre slučka je jednoduchá štruktúra, ktorá nám umožňuje navštíviť všetky prvky zoznamu. Je to podobné ako v prípade základného cyklu for, ale je čitateľnejšie a kompaktnejšie. V dôsledku toho je jednou z najbežnejšie používaných foriem na prechádzanie zoznamom.

Všimnite si, že vylepšené pre slučka je jednoduchšia ako základná pre slučka:

pre (Krajina reťazca: krajiny) {System.out.println (krajina); }

3. Iterátory

An Iterátor je návrhový vzor, ​​ktorý nám ponúka štandardné rozhranie na prechádzanie dátovou štruktúrou bez obáv z vnútornej reprezentácie.

Tento spôsob prechodu dátových štruktúr ponúka mnoho výhod, medzi ktorými môžeme zdôrazniť, že náš kód nezávisí od implementácie.

Preto môže byť štruktúra binárny strom alebo dvojnásobne prepojený zoznam, pretože Iterátor abstrahuje nás od spôsobu vykonávania traverzu. Týmto spôsobom môžeme bez nepríjemných problémov ľahko nahradiť dátové štruktúry v našom kóde.

3.1. Iterátor

V Jave sa Iterátor vzor sa odráža v java.util.Iterátor trieda. To je široko používaný v Jave Zbierky. V dokumente sú dve kľúčové metódy Iterátor, hasNext () a Ďalšie() metódy.

Tu demonštrujeme použitie oboch:

Iterátorské krajinyIterátor = krajiny.iterátor (); while (countryIterator.hasNext ()) {System.out.println (countriesIterator.next ()); }

The hasNext () metóda skontroluje, či v zozname zostali nejaké prvky.

The Ďalšie() metóda vráti nasledujúci prvok v iterácii.

3.2. ListIterator

A ListIterator umožňuje nám prechádzať zoznam prvkov buď vpred, alebo vzad.

Posúvanie zoznamu pomocou ListIterator ďalej sleduje podobný mechanizmus, aký používa Iterátor. Týmto spôsobom môžeme posúvať iterátor vpred pomocou Ďalšie() metódou a koniec zoznamu nájdeme pomocou znaku hasNext () metóda.

Ako vidíme, ListIterator vyzerá veľmi podobne ako Iterátor ktoré sme použili predtým:

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

4. pre každý()

4.1. Iterable.forEach ()

Od verzie Java 8 môžeme používať pre každý() iterácia prvkov zoznamu. Táto metóda je definovaná v dokumente Iterable rozhranie a dokáže prijať parametre Lambda ako parameter.

Syntax je dosť jednoduchá:

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

Pred pre každý funkcie boli všetky iterátory v Jave aktívne, to znamená, že zahrnovali slučku for or a while, ktorá prechádzala zberom údajov, kým nebola splnená určitá podmienka.

So zavedením pre každý ako funkcia v Iterable rozhranie, všetky triedy, ktoré implementujú Iterable majú pre každý pridaná funkcia.

4.2. Stream.forEach ()

Môžeme tiež previesť zbierku hodnôt na Stream a môžeme mať prístup k operáciám ako napr pre každý(), mapa (), alebo filter ().

Tu demonštrujeme typické použitie pre streamy:

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

5. Záver

V tomto článku sme si ukázali rôzne spôsoby iterácie prvkov zoznamu pomocou rozhrania Java API. Medzi nimi sme spomenuli pre slučka, vylepšená pre slučka, Iterátor, ListIterator a pre každý() metóda (zahrnutá v Jave 8).

Okrem toho sme si tiež ukázali, ako používať pre každý() metóda s Prúdy.

Nakoniec je všetok kód použitý v tomto článku k dispozícii v našom repozitári Github.


$config[zx-auto] not found$config[zx-overlay] not found