Iterator v Javi

Iterator v Javi

Iterator v Javi je eden najpogosteje uporabljenih kazalke v ogrodju zbirk Java . Uporablja se za prečkanje ali ponavljanje elementov zbirke enega za drugim.

  • Uporablja se za premikanje elementov samo v smeri naprej.
  • Varno odstrani elemente med prečkanjem s funkcijo remove().
  • Iterator je univerzalni kazalec, ki se uporablja za vse vrste zbirk — seznam in čakalna vrsta.

Deklaracija iteratorja

Iterator javnega vmesnika

Tukaj E predstavlja vrsto elementov, ki jih je treba ponoviti.

Izdelava objekta iteratorja

Objekt Iterator se ustvari s klicem metode iterator() na objektu zbirke. Tukaj bomo uporabili iterator za prehod in tiskanje vsakega elementa v ArrayList .

Zbirka imena = nov ArrayList <>();
Iterator 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  );         }      }   }   

Izhod
A B C  

Hierarhija Iteratorja

Iterator je del paket java.util izvajajo pa ga vsi razredi zbirke prek svojih podvmesnikov.

listiterator_extends_iterator_Iterator-kurzor

Metode vmesnika iteratorja

Vmesnik iteratorja definira tri spodaj navedene metode:

  • hasNext(): Vrne true, če ima ponovitev več elementov.
  • naslednji(): Vrne naslednji element v ponovitvi. Vrže NoSuchElementException če ni prisotnega več elementa.
  • odstrani(): Odstrani zadnji element, ki ga vrne next(). To metodo lahko pokličete samo enkrat na klic next().

Opomba : metoda remove() lahko povzroči dve izjemi, in sicer kot sledi:

Notranje delo

V tem razdelku bomo poskušali razumeti, kako Java Iterator in njegove metode delujejo interno. Za razumevanje te funkcije vzemimo naslednji objekt LinkedList.

1. korak: Zdaj pa ustvarimo objekt Iterator na objektu List, kot je prikazano spodaj:

Iterator placesIterator = mesta.iterator();

Iterator 'citiesIteartor' bo videti takole:

Java Iterator 1. korak1. korak

Tukaj iteratorjev kazalec kaže pred prvim elementom seznama.

2. korak: Zdaj bomo zagnali naslednji delček kode.

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

Java Iterator 2. korak2. korak

Ko zaženemo zgornji delček kode, kazalec iteratorja kaže na prvi element na seznamu, kot je prikazano v zgornjem diagramu.

3. korak: Zdaj bomo zagnali naslednji delček kode.

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

Java Iterator, 3. korak3. korak


Ko zaženemo zgornji delček kode, kazalec Iteratorja kaže na drugi element na seznamu, kot je prikazano v zgornjem diagramu.

4. korak: Izvedite ta postopek, da dosežete kazalec iteratorja do končnega elementa seznama.

Java Iterator korak n4. korak

5. korak: Ko preberemo končni element, če zaženemo spodnji delček kode, ta vrne napačno vrednost.

cityIterator.hasNext();

Java Iterator na koncu

Ker kazalec iteratorja kaže na za končnim elementom seznama hasNext() metoda vrne napačno vrednost.

Opomba: Java Iterator podpira samo iteracijo v smeri naprej, zato je znan kot enosmerni kazalec. V nasprotju s tem je ListIterator dvosmeren in omogoča prečkanje v obe smeri.

Java-Ilterator-6Java Iterator: smer naprej

primer: Tukaj bomo uporabili Iterator za prečkanje in odstranjevanje lihih elementov 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  );      }   }   

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

Pojasnilo: V zgornjem primeru ustvarimo ArrayList celih števil, nato ga ponovimo z uporabo Iteratorja in odstranimo vsa liha števila. Natisne seznam pred in po odstranitvi lihih elementov in natisne spremenjen seznam samo s sodimi številkami.