Iterátor v jazyku Java
Iterátor v Jave je jedným z najčastejšie používaných kurzory v rámci Java Collections Framework . Používa sa na prechádzanie alebo opakovanie prvkov kolekcie jeden po druhom.
- Používa sa na prechádzanie prvkov iba v smere dopredu.
- Bezpečne odstráni prvky počas prechodu pomocou remove().
- Iterátor je univerzálny kurzor, ktorý sa vzťahuje na všetky typy kolekcií – zoznam zoznamov a front.
Vyhlásenie Iterátora
Iterator verejného rozhrania
Tu E predstavuje typ prvkov, ktoré sa majú iterovať.
Vytváranie objektov iterátora
Objekt Iterator sa vytvorí volaním metódy iterator() na objekte kolekcie. Tu použijeme Iterátor na prechádzanie a tlač každého prvku v ArrayList .
JavaZbierka
mená = nový ArrayList <>();
Iterátoritr = names.iterator();
import java.util.ArrayList ; import java.util.Iterator ; public class Geeks { public static void main ( String [] args ) { // Create an ArrayList and add some elements ArrayList < String > al = new ArrayList <> (); al . add ( 'A' ); al . add ( 'B' ); al . add ( 'C' ); // Obtain an iterator for the ArrayList Iterator < String > it = al . iterator (); // Iterate through the elements and print each one while ( it . hasNext ()) { // Get the next element String n = it . next (); System . out . println ( n ); } } }
Výstup
A B C
Hierarchia Iterátora
Iterátor je súčasťou balík java.util a je implementovaný všetkými triedami kolekcií prostredníctvom ich podrozhraní.
Iterátor-kurzor Metódy rozhrania iterátora
Rozhranie iterátora definuje tri metódy uvedené nižšie:
- hasNext(): Vráti hodnotu true, ak má iterácia viac prvkov.
- ďalšie(): Vráti ďalší prvok v iterácii. To hádže NoSuchElementException ak už nie je prítomný žiadny prvok.
- odstrániť(): Odstráni posledný prvok vrátený funkciou next(). Túto metódu možno zavolať iba raz za volanie funkcie next().
Poznámka Metóda remove() môže vyvolať dve výnimky, konkrétne takto:
Interná práca
V tejto časti sa pokúsime pochopiť, ako interne fungujú Java Iterator a jeho metódy. Zoberme si nasledujúci objekt LinkedList, aby sme pochopili túto funkciu.
Krok 1: Teraz vytvorte objekt Iterator na objekte List, ako je uvedené nižšie:
Iterátor
citiesIterator = cities.iterator();
Iterátor „citiesIteartor“ bude vyzerať takto:
Krok-1 Kurzor iterátora tu ukazuje pred prvým prvkom zoznamu.
Krok 2: Teraz spustíme nasledujúci útržok kódu.
citiesIterator.hasNext();
citiesIterator.next();
Krok-2 Keď spustíme vyššie uvedený útržok kódu, kurzor iterátora ukazuje na prvý prvok v zozname, ako je znázornené na obrázku vyššie.
Krok 3: Teraz spustíme nasledujúci útržok kódu.
citiesIterator.hasNext();
citiesIterator.next();
Krok-3
Keď spustíme vyššie uvedený útržok kódu, kurzor iterátora ukazuje na druhý prvok v zozname, ako je znázornené na obrázku vyššie.
Krok 4: Vykonajte tento proces, aby ste dosiahli kurzor iterátora na koncový prvok zoznamu.
Krok-4 Krok 5: Po prečítaní posledného prvku, ak spustíme nižšie uvedený útržok kódu, vráti falošnú hodnotu.
citiesIterator.hasNext();
Keďže kurzor iterátora ukazuje na posledný prvok zoznamu hasNext() metóda vracia falošnú hodnotu.
Poznámka: Java Iterator podporuje iba iteráciu smerom dopredu, takže je známy ako jednosmerný kurzor. Naproti tomu ListIterator je obojsmerný a umožňuje prechod v oboch smeroch.
Java Iterator: Smer vpred Príklad: Tu použijeme Iterátor na prechod a odstránenie nepárnych prvkov z ArrayList.
Java import java.util.ArrayList ; import java.util.Iterator ; public class Geeks { public static void main ( String [] args ) { // Creating an ArrayList of Integer type ArrayList < Integer > al = new ArrayList <> (); // Adding elements to the ArrayList for ( int i = 0 ; i < 10 ; i ++ ) { al . add ( i ); } // Printing the original list System . out . println ( 'Original List: ' + al ); // Creating an Iterator for the ArrayList Iterator < Integer > itr = al . iterator (); // Iterating through the list and removing odd elements while ( itr . hasNext ()) { // Getting the next element int i = itr . next (); System . out . print ( i + ' ' ); // Removing odd elements if ( i % 2 != 0 ) { itr . remove (); } } System . out . println (); // Printing the modified list after removal of odd elements System . out . println ( 'Modified List: ' + al ); } }
Výstup
Original List: [0 1 2 3 4 5 6 7 8 9] 0 1 2 3 4 5 6 7 8 9 Modified List: [0 2 4 6 8]
Vysvetlenie: Vo vyššie uvedenom príklade vytvoríme ArrayList celých čísel, potom ho iterujeme pomocou Iterátora a odstránime všetky nepárne čísla. Vytlačí zoznam pred a po odstránení nepárnych prvkov a vytlačí upravený zoznam iba s párnymi číslami.