logo

Iterador en Java

Un iterador en Java és un dels més utilitzats cursors al Java Collections Framework . S'utilitza per recórrer o iterar per elements d'una col·lecció un a un.

  • S'utilitza per travessar elements només en direcció cap endavant.
  • Elimina elements de manera segura durant el recorregut mitjançant remove().
  • L'iterador és un cursor universal que s'aplica a tots els tipus de col·lecció: conjunt de llista i cua.

Declaració d'iterador

Iterador d'interfície pública

Aquí E representa el tipus d'elements que s'han d'iterar.



serveis web java

Creació d'objectes d'iterador

Un objecte Iterator es crea cridant al mètode iterator() en un objecte de col·lecció. Aquí utilitzarem un iterador per recórrer i imprimir cada element d'un ArrayList .

Col·lecciónoms = new ArrayList<>();
Iteradoritr = noms.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);   }  } } 

Sortida
A B C 

Jerarquia de l'iterador

Iterator forma part de paquet java.util i és implementat per totes les classes de col·lecció mitjançant les seves subinterfícies.

listeterator_extends_iterator_' title=Iterador-cursor

Mètodes de la interfície iteradora

La interfície de l'iterador defineix tres mètodes que s'indiquen a continuació:

  • hasNext(): Retorna true si la iteració té més elements.
  • següent(): Retorna el següent element de la iteració. Es tira NoSuchElementException si no hi ha més element present.
  • eliminar(): Elimina l'últim element retornat per next(). Aquest mètode només es pot cridar una vegada per trucada a next().

Nota El mètode : remove() pot llançar dues excepcions és a dir, de la següent manera:

Treball intern

En aquesta secció intentarem entendre com funcionen internament Java Iterator i els seus mètodes. Prenem el següent objecte LinkedList per entendre aquesta funcionalitat.

Pas 1: Ara creem un objecte Iterator a l'objecte Llista tal com es mostra a continuació:

IteradorcitiesIterator = cities.iterator();

L'iterador "citiesIteartor" es veurà com a continuació:

enter a cadena
Iterador de Java Pas 1' loading='lazy' title=Pas-1

Aquí el cursor de l'iterador apunta abans del primer element de la llista.

Pas 2: Ara executarem el següent fragment de codi.

subcadena cadena java

citiesIterator.hasNext();
citiesIterator.next();

Java Iterator Pas 2' loading='lazy' title=Pas-2

Quan executem el fragment de codi anterior, el cursor d'Iterator apunta al primer element de la llista, tal com es mostra al diagrama anterior.

Pas 3: Ara executarem el següent fragment de codi.

citiesIterator.hasNext();
citiesIterator.next();

Java Iterator Pas 3' loading='lazy' title=Pas-3


Quan executem el fragment de codi anterior, el cursor d'Iterator apunta al segon element de la llista, tal com es mostra al diagrama anterior.

La cadena java conté

Pas 4: Feu aquest procés per arribar al cursor de l'iterador fins a l'element final de la llista.

Pas de l'iterador de Java n' loading='lazy' title=Pas-4

Pas 5: Després de llegir l'element final, si executem el fragment de codi següent, retorna un valor fals.

citiesIterator.hasNext();

Iterador de Java al final' loading='lazy' title=

A mesura que el cursor de l'iterador apunta cap a després de l'element final de la llista hasNext() El mètode retorna un valor fals.

Nota: Java Iterator només admet la iteració de direcció cap endavant, per la qual cosa es coneix com a cursor unidireccional. En canvi, ListIterator és bidireccional que permet el recorregut en ambdues direccions.

Java-Ilterator-6' loading='lazy' title=Iterador de Java: direcció cap endavant

Exemple: Aquí utilitzarem un Iterator per recórrer i eliminar elements estranys d'una 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);  } } 

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

Explicació: A l'exemple anterior, creem una ArrayList d'enters i després la iterarem mitjançant un Iterator i eliminem tots els nombres senars. Imprimeix la llista abans i després d'eliminar els elements senars i imprimeix la llista modificada només amb nombres parells.