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 .
JavaCol·lecció
noms = new ArrayList<>();
Iteradoritr = noms.iterator();
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.
Iterador-cursorMè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ó:
Iterador
citiesIterator = cities.iterator();
L'iterador "citiesIteartor" es veurà com a continuació:
enter a cadena
Pas-1Aquí 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();
Pas-2Quan 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();
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-4Pas 5: Després de llegir l'element final, si executem el fragment de codi següent, retorna un valor fals.
citiesIterator.hasNext();

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.
Iterador de Java: direcció cap endavantExemple: Aquí utilitzarem un Iterator per recórrer i eliminar elements estranys d'una ArrayList.
Javaimport 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.