Iteraattori Javassa

Iteraattori Javassa

Java-iteraattori on yksi yleisimmin käytetyistä kohdistimet Java Collections Frameworkissa . Sitä käytetään kokoelman elementtien läpikulkuun tai iterointiin yksitellen.

  • Sitä käytetään elementtien ajamiseen vain eteenpäin.
  • Poistaa elementit turvallisesti läpikäynnin aikana poista()-toiminnolla.
  • Iterator on yleinen kohdistin, joka koskee kaikkia kokoelmatyyppejä — List Set ja Queue.

Iteraattorin julistus

julkisen käyttöliittymän iteraattori

Tässä E edustaa iteroitavien elementtien tyyppiä.

Iteratorin objektin luominen

Iterator-objekti luodaan kutsumalla kokoelmaobjektin iterator()-metodia. Tässä käytämme Iteraattoria jokaisen elementin läpi kulkemiseen ja tulostamiseen ArrayList .

Kokoelma nimet = uusi ArrayList <>();
Iteraattori itr = nimet.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  );         }      }   }   

Lähtö
A B C  

Iteratorin hierarkia

Iteraattori on osa java.util-paketti ja kaikki kokoelmaluokat toteuttavat sen alirajapintojensa kautta.

listiterator_extends_iterator_Iteraattori-kursori

Iteraattorirajapinnan menetelmät

Iteraattorin käyttöliittymä määrittelee kolme alla lueteltua menetelmää:

  • hasNext(): Palauttaa tosi, jos iteraatiossa on enemmän elementtejä.
  • seuraava(): Palauttaa iteroinnin seuraavan elementin. Se heittää NoSuchElementException jos elementtejä ei ole enempää.
  • poistaa(): Poistaa viimeisen elementin, jonka next() palauttaa. Tätä menetelmää voidaan kutsua vain kerran per kutsu next().

Huom : Remove() -menetelmä voi antaa kaksi poikkeusta, nimittäin seuraavasti:

Sisäinen työskentely

Tässä osiossa yritämme ymmärtää, kuinka Java Iterator ja sen menetelmät toimivat sisäisesti. Otetaan seuraava LinkedList-objekti ymmärtääksemme tämän toiminnon.

Vaihe 1: Luokaamme nyt Iterator-objekti List-objektiin alla olevan kuvan mukaisesti:

Iteraattori kaupungitIterator = kaupungit.iteraattori();

"CitiesIteartor"-iteraattori näyttää seuraavalta:

Java Iterator Vaihe 1Vaihe-1

Tässä Iteratorin kohdistin osoittaa ennen luettelon ensimmäistä elementtiä.

Vaihe 2: Nyt suoritamme seuraavan koodinpätkän.

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

Java Iterator Vaihe 2Vaihe-2

Kun suoritamme yllä olevan koodinpätkän, Iteratorin kohdistin osoittaa luettelon ensimmäiseen elementtiin yllä olevan kaavion mukaisesti.

Vaihe 3: Nyt suoritamme seuraavan koodinpätkän.

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

Java Iterator Vaihe 3Vaihe-3


Kun suoritamme yllä olevan koodinpätkän, Iteratorin kohdistin osoittaa luettelon toiseen elementtiin yllä olevan kaavion mukaisesti.

Vaihe 4: Tee tämä prosessi päästäksesi iteraattorin kohdistin luettelon loppuelementtiin.

Java Iterator Vaihe nVaihe-4

Vaihe 5: Luettuaan viimeisen elementin, jos suoritamme alla olevan koodinpätkän, se palauttaa väärän arvon.

townsIterator.hasNext();

Java Iterator lopussa

Kuten Iteratorin kohdistin osoittaa luettelon viimeisen elementin jälkeen hasNext() menetelmä palauttaa väärän arvon.

Huomautus: Java Iterator tukee vain eteenpäin suuntautuvaa iteraatiota, joten se tunnetaan yksisuuntaisena kohdistimena. Sitä vastoin ListIterator on kaksisuuntainen ja mahdollistaa kulkemisen molempiin suuntiin.

Java-Ilterator-6Java Iterator: Eteenpäin suunta

Esimerkki: Tässä käytämme Iteraattoria kulkemaan ja poistamaan parittomat elementit ArrayLististä.

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  );      }   }   

Lähtö
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]  

Selitys: Yllä olevassa esimerkissä luomme kokonaislukujen ArrayListin ja iteroimme sen läpi Iteraattorilla ja poistamme kaikki parittomat luvut. Se tulostaa luettelon ennen ja jälkeen parittomien elementtien poistamisen ja tulostaa muokatun luettelon vain parillisilla luvuilla.