logo

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írkajména = nový ArrayList<>();
Iterátoritr = 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í.

css centrování obrázku
listiterator_extends_iterator_' title=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átorcitiesIterator = cities.iterator();

java přidat do pole

Iterátor 'citiesIteartor' bude vypadat takto:

Java Iterator Krok 1' loading='lazy' title=Krok-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 2' loading='lazy' title=Krok-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 3' loading='lazy' title=Krok-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 č' loading='lazy' title=Krok-4

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

panda pivot

citiesIterator.hasNext();

Java Iterator na konci' loading='lazy' title=

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-6' loading='lazy' title=Java 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.