logo

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 .

Colectarenume = new ArrayList<>();
Iteratoritr = nume.iterator();

sortare listă java
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_' title=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.

arhitectura von neumann

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

IteratorcitiesIterator = citys.iterator();

Iteratorul „citiesIteartor” va arăta mai jos:

Iteratorul Java Pasul 1' loading='lazy' title=Pasul-1

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

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

formatarea șirurilor de caractere java

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

Iteratorul Java Pasul 2' loading='lazy' title=Pasul-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();

pd merge
Iteratorul Java Pasul 3' loading='lazy' title=Pasul-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 n' loading='lazy' title=Pasul-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' loading='lazy' title=

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-6' loading='lazy' title=Iterator Java: direcția înainte

Exemplu: Aici vom folosi un Iterator pentru a parcurge și elimina elemente ciudate dintr-o ArrayList.

jbutton
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.