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 .
JavaKolekcja
nazwy = nowa lista tablic <>();
Iteratoritr = nazwy.iterator();
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.
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.
Krok 1: Utwórzmy teraz obiekt Iterator na obiekcie List, jak pokazano poniżej:
Iterator
miastaIterator = miasta.iterator();
Iterator „citiesIteartor” będzie wyglądał jak poniżej:
Krok 1 Tutaj Kursor Iteratora wskazuje przed pierwszym elementem Listy.
Krok 2: Teraz uruchomimy następujący fragment kodu.
miastaIterator.hasNext();
miastaIterator.next();
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();
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 4 Krok 5: Jeśli po przeczytaniu ostatniego elementu uruchomimy poniższy fragment kodu, zwróci on wartość fałszywą.
miastaIterator.hasNext();
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.
Iterator Java: kierunek do przodu Przykład: Tutaj użyjemy Iteratora do przeglądania i usuwania nieparzystych elementów 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 ); } }
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.