Iterators Java valodā

Iterators Java valodā

Iterators Java ir viens no visbiežāk izmantotajiem kursori Java kolekciju sistēmā . To izmanto, lai šķērsotu vai iterētu kolekcijas elementus pa vienam.

  • To izmanto elementu pārvietošanai tikai uz priekšu.
  • Droši noņem elementus šķērsošanas laikā, izmantojot Remove().
  • Iterators ir universāls kursors, kas attiecas uz visiem kolekcijas veidiem — sarakstu kopu un rindu.

Iteratora deklarācija

publiskā interfeisa iterators

Šeit E apzīmē atkārtojamo elementu veidu.

Iteratora objekta izveide

Iteratora objekts tiek izveidots, kolekcijas objektā izsaucot iterator() metodi. Šeit mēs izmantosim iteratoru, lai šķērsotu un izdrukātu katru elementu ArrayList .

Kolekcija nosaukumi = jauns ArrayList <>();
Iterators itr = nosaukumi.iterators();

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

Izvade
A B C  

Iteratora hierarhija

Iterators ir daļa no java.util pakotne un to ievieš visas kolekcijas klases, izmantojot to apakšinterfeisus.

listiterator_extends_iterator_Iterators-kursors

Iteratora saskarnes metodes

Iteratora saskarne definē trīs tālāk norādītās metodes.

  • hasNext(): Atgriež patiesu, ja iterācijā ir vairāk elementu.
  • nākamais (): Atgriež nākamo iterācijas elementu. Tas met NoSuchElementException ja vairs nav neviena elementa.
  • noņemt (): Noņem pēdējo elementu, ko atgrieza next(). Šo metodi var izsaukt tikai vienu reizi vienā izsaukumā uz next().

Piezīme : metode remove() var radīt divus izņēmumus, proti:

Iekšējais darbs

Šajā sadaļā mēs centīsimies saprast, kā Java Iterator un tā metodes darbojas iekšēji. Lai saprastu šo funkcionalitāti, izmantosim šo LinkedList objektu.

1. darbība: Tagad izveidosim iteratora objektu saraksta objektā, kā parādīts zemāk:

Iterators cityIterator = pilsētas.iterators();

"CitiesIteartor" iterators izskatīsies šādi:

Java iteratora 1. darbība1. darbība

Šeit Iteratora kursors ir norādīts pirms saraksta pirmā elementa.

2. darbība: Tagad mēs izpildīsim šādu koda fragmentu.

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

Java iteratora 2. darbība2. darbība

Palaižot iepriekš minēto koda fragmentu, iteratora kursors norāda uz pirmo elementu sarakstā, kā parādīts iepriekš redzamajā diagrammā.

3. darbība: Tagad mēs izpildīsim šādu koda fragmentu.

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

Java iteratora 3. darbība3. darbība


Palaižot iepriekš minēto koda fragmentu, Iteratora kursors norāda uz otro elementu sarakstā, kā parādīts iepriekš redzamajā diagrammā.

4. darbība: Veiciet šo procesu, lai sasniegtu iteratora kursoru līdz saraksta beigu elementam.

Java iteratora darbība n4. darbība

5. darbība: Pēc pēdējā elementa nolasīšanas, ja palaižam tālāk norādīto koda fragmentu, tas atgriež nepatiesu vērtību.

cityIterator.hasNext();

Java Iterator beigās

Kā Iteratora kursors norāda uz saraksta pēdējo elementu hasNext() metode atgriež nepatiesu vērtību.

Piezīme: Java Iterator atbalsta tikai uz priekšu vērstu iterāciju, tāpēc to sauc par vienvirziena kursoru. Turpretim ListIterator ir divvirzienu, kas ļauj pārvietoties abos virzienos.

Java-Ilterator-6Java iterators: virziens uz priekšu

Piemērs: Šeit mēs izmantosim Iteratoru, lai šķērsotu un noņemtu nepāra elementus no 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  );      }   }   

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

Paskaidrojums: Iepriekš minētajā piemērā mēs izveidojam veselu skaitļu ArrayList, pēc tam atkārtojam to, izmantojot iteratoru, un noņem visus nepāra skaitļus. Tas izdrukā sarakstu pirms un pēc nepāra elementu noņemšanas un izdrukā modificēto sarakstu tikai ar pāra skaitļiem.