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.
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-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ó:
Iterador
citiesIterator = cities.iterator();
L'iterador "citiesIteartor" es veurà com a continuació:
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.
citiesIterator.hasNext();
citiesIterator.next();
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();
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.
Pas 4: Feu aquest procés per arribar al cursor de l'iterador fins a l'element final de la llista.
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();
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 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.