Iterátor v Javě

Iterátor v Javě

Iterátor v Javě je jedním z nejčastěji používaných kurzory v Java Collections Framework . Používá se k procházení nebo iteraci prvků kolekce jeden po druhém.

  • Používá se k přejíždění prvků pouze v dopředném směru.
  • Bezpečně odstraní prvky během procházení pomocí remove().
  • Iterátor je univerzální kurzor, který se vztahuje na všechny typy kolekcí — sadu seznamů a frontu.

Deklarace Iterátoru

Iterátor veřejného rozhraní

Zde E představuje typ prvků, které mají být iterovány.



Vytvoření objektu iterátoru

Objekt Iterator se vytvoří voláním metody iterator() na objektu kolekce. Zde použijeme Iterátor k procházení a tisku každého prvku v ArrayList .

Sbírka jména = nový ArrayList <>();
Iterátor itr = jmena.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  );         }      }   }   

Výstup
A B C  

Hierarchie iterátoru

Iterátor je součástí balíček java.util a je implementován všemi třídami kolekce prostřednictvím jejich podrozhraní.

listiterator_extends_iterator_Iterátor-kurzor

Metody rozhraní iterátoru

Rozhraní iterátoru definuje tři níže uvedené metody:

  • hasNext(): Vrátí hodnotu true, pokud má iterace více prvků.
  • další(): Vrátí další prvek v iteraci. To hází NoSuchElementException pokud není přítomen žádný další prvek.
  • odstranit(): Odebere poslední prvek vrácený next(). Tuto metodu lze volat pouze jednou za volání next().

Poznámka : metoda remove() může vyvolat dvě výjimky, konkrétně takto:

Interní pracovní

V této části se pokusíme porozumět tomu, jak Java Iterator a jeho metody interně fungují. Vezměme si následující objekt LinkedList, abychom tuto funkci pochopili.

Krok 1: Nyní vytvoříme objekt Iterator na objektu List, jak je znázorněno níže:

Iterátor citiesIterator = cities.iterator();

Iterátor 'citiesIteartor' bude vypadat takto:

Java Iterator Krok 1Krok-1

Kurzor iterátoru zde ukazuje před první prvek seznamu.

Krok 2: Nyní spustíme následující fragment kódu.

citiesIterator.hasNext();
citiesIterator.next();

Java Iterator Krok 2Krok-2

Když spustíme výše uvedený fragment kódu, kurzor Iteratoru ukazuje na první prvek v seznamu, jak je znázorněno na výše uvedeném diagramu.

Krok 3: Nyní spustíme následující fragment kódu.

citiesIterator.hasNext();
citiesIterator.next();

Java Iterator Krok 3Krok-3


Když spustíme výše uvedený fragment kódu, kurzor Iteratoru ukazuje na druhý prvek v seznamu, jak je znázorněno na výše uvedeném diagramu.

Krok 4: Proveďte tento proces, abyste dosáhli kurzoru iterátoru na koncový prvek seznamu.

Java Iterator Krok čKrok-4

Krok 5: Po přečtení posledního prvku, pokud spustíme níže uvedený fragment kódu, vrátí false hodnotu.

citiesIterator.hasNext();

Java Iterator na konci

Kurzor iterátoru ukazuje na poslední prvek seznamu hasNext() metoda vrací falešnou hodnotu.

Poznámka: Java Iterator podporuje pouze iteraci dopředného směru, takže je znám jako jednosměrný kurzor. Naproti tomu ListIterator je obousměrný a umožňuje průchod v obou směrech.

Java-Ilterator-6Java Iterator: Směr vpřed

Příklad: Zde použijeme Iterátor k procházení a odstraňování lichých prvků z 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  );      }   }   

Výstup
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]  

Vysvětlení: Ve výše uvedeném příkladu vytvoříme ArrayList celých čísel, poté jej iterujeme pomocí Iterátoru a odstraníme všechna lichá čísla. Vytiskne seznam před a po odstranění lichých prvků a vytiskne upravený seznam pouze se sudými čísly.


Nejlepší Články

Kategorie

Zajímavé Články