Iterator u Javi

Iterator u Javi

Iterator u Javi jedan je od najčešće korištenih kursori u Java Collections Frameworku . Koristi se za prelazak ili iteraciju kroz elemente zbirke jedan po jedan.

  • Koristi se za pomicanje elemenata samo u smjeru prema naprijed.
  • Uklanja elemente na siguran način tijekom obilaska koristeći remove().
  • Iterator je univerzalni pokazivač koji se primjenjuje na sve vrste kolekcija — skup popisa i red čekanja.

Deklaracija iteratora

javno sučelje Iterator

Ovdje E predstavlja tip elemenata koji se ponavljaju.

Stvaranje objekta iteratora

Iterator objekt se stvara pozivanjem metode iterator() na objektu zbirke. Ovdje ćemo upotrijebiti iterator za prelazak i ispis svakog elementa u ArrayList .

Kolekcija imena = novi ArrayList <>();
Iterator itr = imena.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  );         }      }   }   

Izlaz
A B C  

Hijerarhija iteratora

Iterator je dio java.util paket a implementiraju ga sve klase zbirke putem svojih podsučelja.

listiterator_extends_iterator_Iterator-kursor

Metode sučelja iteratora

Sučelje iteratora definira tri metode navedene u nastavku:

  • hasNext(): Vraća true ako iteracija ima više elemenata.
  • sljedeći(): Vraća sljedeći element u iteraciji. Baca se NoSuchElementException ako nema više elementa.
  • ukloniti(): Uklanja zadnji element koji je vratio next(). Ova se metoda može pozvati samo jednom po pozivu next().

Bilješka : metoda remove() može izbaciti dvije iznimke naime kako slijedi:

Interni rad

U ovom odjeljku pokušat ćemo razumjeti kako Java Iterator i njegove metode interno rade. Uzmimo sljedeći objekt LinkedList da bismo razumjeli ovu funkcionalnost.

Korak 1: Kreirajmo sada Iterator objekt na List objektu kao što je prikazano u nastavku:

Iterator gradeIterator = grade.iterator();

Iterator 'citiesIteartor' izgledat će ovako:

Java Iterator Korak 1Korak-1

Ovdje kursor iteratora pokazuje ispred prvog elementa liste.

Korak 2: Sada ćemo pokrenuti sljedeći isječak koda.

cityIterator.hasNext();
cityIterator.next();

Java iterator, korak 2Korak-2

Kada pokrenemo gornji isječak koda, kursor iteratora pokazuje na prvi element na popisu kao što je prikazano na gornjem dijagramu.

Korak 3: Sada ćemo pokrenuti sljedeći isječak koda.

cityIterator.hasNext();
cityIterator.next();

Java iterator, korak 3Korak-3


Kada pokrenemo gornji isječak koda, kursor iteratora pokazuje na drugi element na popisu kao što je prikazano na gornjem dijagramu.

Korak 4: Učinite ovaj postupak kako biste dosegli kursor iteratora do završnog elementa popisa.

Java Iterator korak brKorak-4

Korak 5: Nakon čitanja posljednjeg elementa, ako pokrenemo donji isječak koda, on vraća lažnu vrijednost.

cityIterator.hasNext();

Java Iterator na kraju

Budući da pokazivač iteratora pokazuje nakon završnog elementa liste hasNext() metoda vraća lažnu vrijednost.

Bilješka: Java Iterator podržava samo iteraciju u smjeru prema naprijed pa je poznat kao jednosmjerni kursor. Nasuprot tome, ListIterator je dvosmjeran i omogućuje kretanje u oba smjera.

Java-Ilterator-6Java iterator: smjer prema naprijed

Primjer: Ovdje ćemo koristiti Iterator za prelazak i uklanjanje neparnih elemenata iz 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  );      }   }   

Izlaz
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]  

Obrazloženje: U gornjem primjeru stvaramo ArrayList cijelih brojeva, zatim ga ponavljamo pomoću Iteratora i uklanjamo sve neparne brojeve. Ispisuje popis prije i nakon uklanjanja neparnih elemenata i ispisuje modificirani popis samo s parnim brojevima.