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