Iterator w Javie

Iterator w Javie

Iterator w Javie jest jednym z najczęściej używanych kursory w środowisku Java Collections Framework . Służy do przechodzenia lub iterowania elementów kolekcji jeden po drugim.

  • Służy do przemieszczania elementów wyłącznie w kierunku do przodu.
  • Bezpiecznie usuwa elementy podczas przechodzenia za pomocą metody usuwania ().
  • Iterator to uniwersalny kursor, który ma zastosowanie do wszystkich typów kolekcji — zestawu list i kolejki.

Deklaracja iteratora

interfejs publiczny Iterator

Tutaj E reprezentuje typ elementów, po których należy wykonać iterację.

Tworzenie obiektu iteratora

Obiekt Iterator jest tworzony poprzez wywołanie metody iterator() na obiekcie kolekcji. Tutaj użyjemy Iteratora do przeglądania i drukowania każdego elementu w pliku Lista tablic .

Kolekcja nazwy = nowa lista tablic <>();
Iterator itr = nazwy.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  );         }      }   }   

Wyjście
A B C  

Hierarchia iteratora

Iterator jest częścią pakiet java.util i jest implementowany przez wszystkie klasy kolekcji poprzez ich podinterfejsy.

listiterator_extends_iterator_Kursor iteratora

Metody interfejsu iteratora

Interfejs iteratora definiuje trzy metody wymienione poniżej:

  • maNastępny(): Zwraca wartość true, jeśli iteracja zawiera więcej elementów.
  • Następny(): Zwraca następny element w iteracji. Rzuca Wyjątek NoSuchElement jeśli nie ma już więcej elementów.
  • usunąć(): Usuwa ostatni element zwrócony przez next(). Metodę tę można wywołać tylko raz na wywołanie metody next().

Notatka : metoda usuwania() może zgłosić dwa wyjątki, a mianowicie następujące:

Praca wewnętrzna

W tej sekcji postaramy się zrozumieć, jak wewnętrznie działa Java Iterator i jego metody. Aby zrozumieć tę funkcjonalność, weźmy następujący obiekt LinkedList.

Krok 1: Utwórzmy teraz obiekt Iterator na obiekcie List, jak pokazano poniżej:

Iterator miastaIterator = miasta.iterator();

Iterator „citiesIteartor” będzie wyglądał jak poniżej:

Iterator Java Krok 1Krok 1

Tutaj Kursor Iteratora wskazuje przed pierwszym elementem Listy.

Krok 2: Teraz uruchomimy następujący fragment kodu.

miastaIterator.hasNext();
miastaIterator.next();

Iterator Java Krok 2Krok 2

Kiedy uruchomimy powyższy fragment kodu, Kursor Iteratora wskazuje pierwszy element na liście, jak pokazano na powyższym diagramie.

Krok 3: Teraz uruchomimy następujący fragment kodu.

miastaIterator.hasNext();
miastaIterator.next();

Iterator Java Krok 3Krok 3


Kiedy uruchomimy powyższy fragment kodu, Kursor Iteratora wskazuje drugi element na liście, jak pokazano na powyższym diagramie.

Krok 4: Wykonaj ten proces, aby dotrzeć kursorem iteratora do końcowego elementu listy.

Krok iteratora JavaKrok 4

Krok 5: Jeśli po przeczytaniu ostatniego elementu uruchomimy poniższy fragment kodu, zwróci on wartość fałszywą.

miastaIterator.hasNext();

Iterator Java na końcu

Ponieważ Kursor Iteratora wskazuje na ostatni element Listy maNastępny() metoda zwraca fałszywą wartość.

Notatka: Iterator Java obsługuje tylko iterację w kierunku do przodu, dlatego jest nazywany kursorem jednokierunkowym. W przeciwieństwie do tego ListIterator jest dwukierunkowy, umożliwiając poruszanie się w obu kierunkach.

Ilterator Java-6Iterator Java: kierunek do przodu

Przykład: Tutaj użyjemy Iteratora do przeglądania i usuwania nieparzystych elementów 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  );      }   }   

Wyjście
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]  

Wyjaśnienie: W powyższym przykładzie tworzymy ArrayList liczb całkowitych, a następnie iterujemy po niej za pomocą Iteratora i usuwamy wszystkie liczby nieparzyste. Drukuje listę przed i po usunięciu elementów nieparzystych, a zmodyfikowaną listę zawiera tylko liczby parzyste.