Iterátor Java nyelven

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ény nevek = új ArrayList <>();
Iterátor itr = 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_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:

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átor városokIterátor = városok.iterátor();

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

Java Iterator 1. lépés1. 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és2. 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és3. 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és4. 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.

cityIterator.hasNext();

Java Iterator a végén

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-6Java 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.