logo

Iterator w Javie

Iterator w Javie jest jednym z najczęściej używanych kursory w środowisku Java Collections Framework . Służy do przechodzenia lub iterowania elementów kolekcji jeden po drugim.

  • Służy do przemieszczania elementów wyłącznie w kierunku do przodu.
  • Bezpiecznie usuwa elementy podczas przechodzenia za pomocą metody usuwania ().
  • Iterator to uniwersalny kursor, który ma zastosowanie do wszystkich typów kolekcji — zestawu list i kolejki.

Deklaracja iteratora

interfejs publiczny Iterator

Tutaj E reprezentuje typ elementów, po których należy wykonać iterację.



Tworzenie obiektu iteratora

Obiekt Iterator jest tworzony poprzez wywołanie metody iterator() na obiekcie kolekcji. Tutaj użyjemy Iteratora do przeglądania i drukowania każdego elementu w pliku Lista tablic .

Kolekcjanazwy = nowa lista tablic<>();
Iteratoritr = nazwy.iterator();

rodzaje drzew binarnych
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);   }  } } 

Wyjście
A B C 

Hierarchia iteratora

Iterator jest częścią pakiet java.util i jest implementowany przez wszystkie klasy kolekcji poprzez ich podinterfejsy.

listiterator_extends_iterator_' title=Kursor iteratora

Metody interfejsu iteratora

Interfejs iteratora definiuje trzy metody wymienione poniżej:

  • maNastępny(): Zwraca wartość true, jeśli iteracja zawiera więcej elementów.
  • Następny(): Zwraca następny element w iteracji. Rzuca Wyjątek NoSuchElement jeśli nie ma już więcej elementów.
  • usunąć(): Usuwa ostatni element zwrócony przez next(). Metodę tę można wywołać tylko raz na wywołanie metody next().

Notatka : metoda usuwania() może zgłosić dwa wyjątki, a mianowicie następujące:

Praca wewnętrzna

W tej sekcji postaramy się zrozumieć, jak wewnętrznie działa Java Iterator i jego metody. Aby zrozumieć tę funkcjonalność, weźmy następujący obiekt LinkedList.

wyśrodkuj obraz w CSS

Krok 1: Utwórzmy teraz obiekt Iterator na obiekcie List, jak pokazano poniżej:

IteratormiastaIterator = miasta.iterator();

Iterator „citiesIteartor” będzie wyglądał jak poniżej:

Iterator Java Krok 1' loading='lazy' title=Krok 1

Tutaj Kursor Iteratora wskazuje przed pierwszym elementem Listy.

Krok 2: Teraz uruchomimy następujący fragment kodu.

jak odczytać plik json

miastaIterator.hasNext();
miastaIterator.next();

Iterator Java Krok 2' loading='lazy' title=Krok 2

Kiedy uruchomimy powyższy fragment kodu, Kursor Iteratora wskazuje pierwszy element na liście, jak pokazano na powyższym diagramie.

Krok 3: Teraz uruchomimy następujący fragment kodu.

miastaIterator.hasNext();
miastaIterator.next();

tablice Java
Iterator Java Krok 3' loading='lazy' title=Krok 3


Kiedy uruchomimy powyższy fragment kodu, Kursor Iteratora wskazuje drugi element na liście, jak pokazano na powyższym diagramie.

Krok 4: Wykonaj ten proces, aby dotrzeć kursorem iteratora do końcowego elementu listy.

Krok iteratora Java' loading='lazy' title=Krok 4

Krok 5: Jeśli po przeczytaniu ostatniego elementu uruchomimy poniższy fragment kodu, zwróci on wartość fałszywą.

miastaIterator.hasNext();

Iterator Java na końcu' loading='lazy' title=

Ponieważ Kursor Iteratora wskazuje na ostatni element Listy maNastępny() metoda zwraca fałszywą wartość.

Notatka: Iterator Java obsługuje tylko iterację w kierunku do przodu, dlatego jest nazywany kursorem jednokierunkowym. W przeciwieństwie do tego ListIterator jest dwukierunkowy, umożliwiając poruszanie się w obu kierunkach.

Ilterator Java-6' loading='lazy' title=Iterator Java: kierunek do przodu

Przykład: Tutaj użyjemy Iteratora do przeglądania i usuwania nieparzystych elementów z ArrayList.

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

Wyjście
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] 

Wyjaśnienie: W powyższym przykładzie tworzymy ArrayList liczb całkowitych, a następnie iterujemy po niej za pomocą Iteratora i usuwamy wszystkie liczby nieparzyste. Drukuje listę przed i po usunięciu elementów nieparzystych, a zmodyfikowaną listę zawiera tylko liczby parzyste.