Iterator în Java

Iterator în Java

Un iterator în Java este unul dintre cele mai frecvent utilizate cursoare în cadrul Java Collections Framework . Este folosit pentru a parcurge sau itera elementele unei colecții unul câte unul.

  • Este folosit pentru a traversa elemente numai în direcția înainte.
  • Îndepărtează elementele în siguranță în timpul traversării folosind remove().
  • Iteratorul este un cursor universal care se aplică tuturor tipurilor de colecții — List Set și Queue.

Declarația Iteratorului

Iterator de interfață publică

Aici E reprezintă tipul de elemente care trebuie iterate.

Crearea obiectului Iterator

Un obiect Iterator este creat prin apelarea metodei iterator() pe un obiect de colecție. Aici vom folosi un Iterator pentru a parcurge și imprima fiecare element dintr-un ArrayList .

Colectare nume = new ArrayList <>();
Iterator itr = nume.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  );         }      }   }   

Ieșire
A B C  

Ierarhia Iteratorului

Iteratorul face parte din pachetul java.util și este implementat de toate clasele de colecție prin subinterfețele lor.

listeterator_extends_iterator_Iterator-cursor

Metode de interfață iterator

Interfața iteratorului definește trei metode, după cum sunt enumerate mai jos:

  • areNext(): Returnează adevărat dacă iterația are mai multe elemente.
  • Următorul(): Returnează următorul element din iterație. Aruncă NoSuchElementException dacă nu mai este prezent niciun element.
  • elimina(): Îndepărtează ultimul element returnat de next(). Această metodă poate fi apelată o singură dată pe apel la next().

Nota : metoda remove() poate arunca două excepții și anume după cum urmează:

Lucrul intern

În această secțiune vom încerca să înțelegem cum funcționează intern Java Iterator și metodele sale. Să luăm următorul obiect LinkedList pentru a înțelege această funcționalitate.

Pasul 1: Acum să creăm un obiect Iterator pe obiectul Listă, așa cum se arată mai jos:

Iterator citiesIterator = citys.iterator();

Iteratorul „citiesIteartor” va arăta mai jos:

Iteratorul Java Pasul 1Pasul-1

Aici Cursorul lui Iterator indică înaintea primului element al Listei.

Pasul 2: Acum vom rula următorul fragment de cod.

citysIterator.hasNext();
citysIterator.next();

Iteratorul Java Pasul 2Pasul-2

Când rulăm fragmentul de cod de mai sus, Cursorul lui Iterator indică primul element din listă, așa cum se arată în diagrama de mai sus.

Pasul 3: Acum vom rula următorul fragment de cod.

citysIterator.hasNext();
citysIterator.next();

Iteratorul Java Pasul 3Pasul-3


Când rulăm fragmentul de cod de mai sus, Cursorul lui Iterator indică al doilea element din listă, așa cum se arată în diagrama de mai sus.

Pasul 4: Faceți acest proces pentru a ajunge la Cursorul Iteratorului la elementul final al Listei.

Iteratorul Java Pasul nPasul-4

Pasul 5: După citirea elementului final, dacă rulăm fragmentul de cod de mai jos, returnează o valoare falsă.

citysIterator.hasNext();

Iterator Java la sfârșit

Pe măsură ce cursorul lui Iterator indică după elementul final al listei areNext() metoda returnează o valoare falsă.

Nota: Java Iterator acceptă numai iterația direcției înainte, așa că este cunoscut ca un cursor unidirecțional. În schimb, ListIterator este bidirecțional, permițând traversarea în ambele direcții.

Java-Ilterator-6Iterator Java: direcția înainte

Exemplu: Aici vom folosi un Iterator pentru a parcurge și elimina elemente ciudate dintr-o 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  );      }   }   

Ieșire
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]  

Explicaţie: În exemplul de mai sus, creăm o ArrayList de numere întregi, apoi o iterăm folosind un Iterator și eliminăm toate numerele impare. Tipărește lista înainte și după eliminarea elementelor impare și tipărește lista modificată doar cu numere pare.