logo

Iterátor Java nyelven

A Java Iterator az egyik leggyakrabban használt kurzorok a Java Collections Frameworkben . Egy gyűjtemény elemeinek egyenkénti bejárására vagy iterálására szolgál.

  • Csak előrefelé mozgatható elemek.
  • Biztonságosan eltávolítja az elemeket a bejárás során a remove() segítségével.
  • Az Iterator egy univerzális kurzor, amely minden gyűjteménytípusra vonatkozik - List Set és Queue.

Az Iterátor nyilatkozata

nyilvános felület Iterátor

Itt E az iterálandó elemek típusát jelöli.



Iterátor objektum létrehozása

Az Iterator objektum az iterator() metódus meghívásával jön létre egy gyűjteményes objektumon. Itt egy Iterátort fogunk használni az egyes elemek bejárására és kinyomtatására ArrayList .

Gyűjteménynevek = új ArrayList<>();
Iterátoritr = nevek.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);   }  } } 

Kimenet
A B C 

Az Iterátor hierarchiája

Az Iterátor része a java.util csomag és az összes gyűjteményosztály megvalósítja az alinterfészein keresztül.

listiterator_extends_iterator_' title=Iterátor-kurzor

Az iterátor interfész módszerei

Az iterátor felület három módszert határoz meg az alábbiak szerint:

  • hasNext(): Igaz értéket ad vissza, ha az iteráció több elemet tartalmaz.
  • következő(): Az iteráció következő elemét adja vissza. Ez dob NoSuchElementException ha nincs több elem.
  • eltávolítás(): Eltávolítja a next() által visszaadott utolsó elemet. Ez a metódus a next() hívásonként csak egyszer hívható meg.

Jegyzet : a remove() metódus két kivételt vethet ki, mégpedig a következők szerint:

shell fajta

Belső munkavégzés

Ebben a részben megpróbáljuk megérteni a Java Iterator és módszerei belső működését. Vegyük a következő LinkedList objektumot a funkció megértéséhez.

1. lépés: Most hozzunk létre egy Iterator objektumot a List objektumban az alábbiak szerint:

IterátorvárosokIterátor = városok.iterátor();

A "citiesIteartor" iterátor az alábbiak szerint fog kinézni:

Java Iterator 1. lépés' loading='lazy' title=1. lépés

Itt az Iterátor kurzora a lista első eleme előtt mutat.

2. lépés: Most a következő kódrészletet fogjuk futtatni.

cityIterator.hasNext();
cityIterator.next();

Java Iterator 2. lépés' loading='lazy' title=2. lépés

A fenti kódrészlet futtatásakor az Iterator kurzora a lista első elemére mutat, ahogy a fenti diagramon látható.

3. lépés: Most a következő kódrészletet fogjuk futtatni.

cityIterator.hasNext();
cityIterator.next();

Java Iterator 3. lépés' loading='lazy' title=3. lépés


Amikor a fenti kódrészletet futtatjuk, az Iterator kurzora a lista második elemére mutat, amint az a fenti diagramon látható.

4. lépés: Hajtsa végre ezt a folyamatot, hogy elérje az iterátor kurzorát a lista végeleméhez.

Java Iterator n. lépés' loading='lazy' title=4. lépés

5. lépés: Az utolsó elem beolvasása után, ha futtatjuk az alábbi kódrészletet, hamis értéket ad vissza.

hogyan lehet aktuális dátumot lekérni java-ban

cityIterator.hasNext();

Java Iterator a végén' loading='lazy' title=

Ahogy az Iterátor kurzora a Lista utolsó eleme utáni elemre mutat hasNext() metódus hamis értéket ad vissza.

Jegyzet: A Java Iterator csak az előre irányú iterációt támogatja, ezért egyirányú kurzorként ismert. Ezzel szemben a ListIterator kétirányú, lehetővé téve a bejárást mindkét irányban.

Java-Ilterator-6' loading='lazy' title=Java Iterator: előre irány

Példa: Itt egy Iterátort fogunk használni az ArrayList páratlan elemeinek bejárására és eltávolítására.

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);  } } 

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

Magyarázat: A fenti példában egész számokból hozunk létre egy ArrayList listát, majd egy Iterátor segítségével iteráljuk végig, és eltávolítjuk az összes páratlan számot. Kinyomtatja a listát a páratlan elemek eltávolítása előtt és után, és a módosított listát csak páros számokkal írja ki.