Iterator u Javi
Iterator u Javi jedan je od najčešće korištenih kursori u Java Collections Frameworku . Koristi se za prelazak ili iteraciju kroz elemente zbirke jedan po jedan.
- Koristi se za pomicanje elemenata samo u smjeru prema naprijed.
- Uklanja elemente na siguran način tijekom obilaska koristeći remove().
- Iterator je univerzalni pokazivač koji se primjenjuje na sve vrste kolekcija — skup popisa i red čekanja.
Deklaracija iteratora
javno sučelje Iterator
Ovdje E predstavlja tip elemenata koji se ponavljaju.
Stvaranje objekta iteratora
Iterator objekt se stvara pozivanjem metode iterator() na objektu zbirke. Ovdje ćemo upotrijebiti iterator za prelazak i ispis svakog elementa u ArrayList .
JavaKolekcija
imena = novi ArrayList <>();
Iteratoritr = imena.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 ); } } }
Izlaz
A B C
Hijerarhija iteratora
Iterator je dio java.util paket a implementiraju ga sve klase zbirke putem svojih podsučelja.
Iterator-kursor Metode sučelja iteratora
Sučelje iteratora definira tri metode navedene u nastavku:
- hasNext(): Vraća true ako iteracija ima više elemenata.
- sljedeći(): Vraća sljedeći element u iteraciji. Baca se NoSuchElementException ako nema više elementa.
- ukloniti(): Uklanja zadnji element koji je vratio next(). Ova se metoda može pozvati samo jednom po pozivu next().
Bilješka : metoda remove() može izbaciti dvije iznimke naime kako slijedi:
Interni rad
U ovom odjeljku pokušat ćemo razumjeti kako Java Iterator i njegove metode interno rade. Uzmimo sljedeći objekt LinkedList da bismo razumjeli ovu funkcionalnost.
Korak 1: Kreirajmo sada Iterator objekt na List objektu kao što je prikazano u nastavku:
Iterator
gradeIterator = grade.iterator();
Iterator 'citiesIteartor' izgledat će ovako:
Korak-1 Ovdje kursor iteratora pokazuje ispred prvog elementa liste.
Korak 2: Sada ćemo pokrenuti sljedeći isječak koda.
cityIterator.hasNext();
cityIterator.next();
Korak-2 Kada pokrenemo gornji isječak koda, kursor iteratora pokazuje na prvi element na popisu kao što je prikazano na gornjem dijagramu.
Korak 3: Sada ćemo pokrenuti sljedeći isječak koda.
cityIterator.hasNext();
cityIterator.next();
Korak-3
Kada pokrenemo gornji isječak koda, kursor iteratora pokazuje na drugi element na popisu kao što je prikazano na gornjem dijagramu.
Korak 4: Učinite ovaj postupak kako biste dosegli kursor iteratora do završnog elementa popisa.
Korak-4 Korak 5: Nakon čitanja posljednjeg elementa, ako pokrenemo donji isječak koda, on vraća lažnu vrijednost.
cityIterator.hasNext();
Budući da pokazivač iteratora pokazuje nakon završnog elementa liste hasNext() metoda vraća lažnu vrijednost.
Bilješka: Java Iterator podržava samo iteraciju u smjeru prema naprijed pa je poznat kao jednosmjerni kursor. Nasuprot tome, ListIterator je dvosmjeran i omogućuje kretanje u oba smjera.
Java iterator: smjer prema naprijed Primjer: Ovdje ćemo koristiti Iterator za prelazak i uklanjanje neparnih elemenata iz 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 ); } }
Izlaz
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]
Obrazloženje: U gornjem primjeru stvaramo ArrayList cijelih brojeva, zatim ga ponavljamo pomoću Iteratora i uklanjamo sve neparne brojeve. Ispisuje popis prije i nakon uklanjanja neparnih elemenata i ispisuje modificirani popis samo s parnim brojevima.