Iterátor v jazyku Java

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 .

Zbierka mená = nový ArrayList <>();
Iterátor itr = names.iterator();

Java
   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í.

listiterator_extends_iterator_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:

Java Iterator Krok 1Krok-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();

Java Iterator Krok 2Krok-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();

Java Iterator Krok 3Krok-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.

Java Iterator Krok č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();

Java Iterator na konci

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-Ilterator-6Java 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.