logo

Iteratorius Java

„Java“ iteratorius yra vienas dažniausiai naudojamų žymekliai Java kolekcijų sistemoje . Jis naudojamas kolekcijos elementams pereiti arba kartoti po vieną.

  • Jis naudojamas elementams važiuoti tik į priekį.
  • Saugiai pašalina elementus važiuojant naudojant Remove().
  • Iteratorius yra universalus žymeklis, kuris taikomas visų tipų rinkiniams – sąrašo rinkiniui ir eilei.

Iteratoriaus deklaracija

viešosios sąsajos iteratorius

Čia E reiškia elementų, kurie turi būti kartojami, tipą.



c programa dvimačiai masyvai

Iteratoriaus objekto kūrimas

Iteratoriaus objektas sukuriamas kolekcijos objekte iškviečiant iterator() metodą. Čia mes naudosime Iteratorių, norėdami pereiti ir spausdinti kiekvieną elementą ArrayList .

Kolekcijavardai = naujas ArrayList<>();
Iteratoriusitr = vardai.iteratorius();

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

Išvestis
A B C 

Iteratoriaus hierarchija

Iteratorius yra dalis java.util paketą ir yra įdiegta visose kolekcijų klasėse per savo antrines sąsajas.

listiterator_extends_iterator_' title=Iteratorius-žymeklis

Iteratoriaus sąsajos metodai

Iteratoriaus sąsaja apibrėžia tris toliau išvardytus metodus:

  • hasNext (): Grąžina tiesa, jei iteracija turi daugiau elementų.
  • kitas (): Grąžina kitą iteracijos elementą. Tai meta NoSuchElementException jei daugiau elemento nėra.
  • pašalinti (): Pašalina paskutinį elementą, grąžintą next(). Šis metodas gali būti iškviestas tik vieną kartą per kvietimą į next().

Pastaba : Remove() metodas gali padaryti dvi išimtis, būtent taip:

Vidinis darbas

Šiame skyriuje pabandysime suprasti, kaip Java Iterator ir jo metodai veikia viduje. Paimkime šį LinkedList objektą, kad suprastume šią funkciją.

1 veiksmas: Dabar sąrašo objekte sukurkime Iteratoriaus objektą, kaip parodyta toliau:

centrinis vaizdas css

IteratoriusmiestaiIteratorius = miestai.iteratorius();

„CitiesIteartor“ iteratorius atrodys taip:

„Java Iterator“ 1 veiksmas' loading='lazy' title=1 veiksmas

Čia Iteratoriaus žymeklis yra nukreiptas prieš pirmąjį sąrašo elementą.

2 veiksmas: Dabar paleisime šį kodo fragmentą.

miestaiIteratorius.hasNext();
miestaiIteratorius.next();

„Java Iterator“ 2 veiksmas' loading='lazy' title=2 veiksmas

Kai paleidžiame aukščiau pateiktą kodo fragmentą, Iteratoriaus žymeklis nurodo pirmąjį sąrašo elementą, kaip parodyta aukščiau esančioje diagramoje.

3 veiksmas: Dabar paleisime šį kodo fragmentą.

miestaiIteratorius.hasNext();
miestaiIteratorius.next();

nėra įvesties signalo
„Java Iterator“ 3 veiksmas' loading='lazy' title=3 veiksmas


Kai paleidžiame aukščiau pateiktą kodo fragmentą, Iteratoriaus žymeklis nukreipia į antrąjį sąrašo elementą, kaip parodyta aukščiau esančioje diagramoje.

4 veiksmas: Atlikite šį procesą, kad pasiektumėte Iteratoriaus žymeklį iki galo sąrašo elemento.

„Java Iterator“ veiksmas n' loading='lazy' title=4 veiksmas

5 veiksmas: Nuskaitęs paskutinį elementą, jei paleidžiame toliau pateiktą kodo fragmentą, jis grąžina klaidingą reikšmę.

miestaiIteratorius.hasNext();

„Java Iterator“ pabaigoje' loading='lazy' title=

Kaip Iteratoriaus žymeklis nurodo į po paskutinio sąrašo elemento hasNext () metodas grąžina klaidingą reikšmę.

Pastaba: „Java Iterator“ palaiko tik į priekį nukreiptą iteraciją, todėl yra žinomas kaip vienakryptis žymeklis. Priešingai, ListIterator yra dvikryptis, leidžiantis judėti abiem kryptimis.

Java-Ilterator-6' loading='lazy' title=„Java Iterator“: kryptis pirmyn

Pavyzdys: Čia mes naudosime Iteratorių, kad pereitume ir pašalintume nelyginius elementus iš „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);  } } 

Išvestis
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] 

Paaiškinimas: Aukščiau pateiktame pavyzdyje sukuriame sveikųjų skaičių ArrayList, tada jį kartojame naudodami Iteratorių ir pašaliname visus nelyginius skaičius. Jis išspausdina sąrašą prieš ir po nelyginių elementų pašalinimo ir spausdina pakeistą sąrašą tik su lyginiais skaičiais.