logo

Iteraattori Javassa

Java-iteraattori on yksi yleisimmin käytetyistä kohdistimet Java Collections Frameworkissa . Sitä käytetään kokoelman elementtien läpikulkuun tai iterointiin yksitellen.

  • Sitä käytetään elementtien ajamiseen vain eteenpäin.
  • Poistaa elementit turvallisesti läpikäynnin aikana poista()-toiminnolla.
  • Iterator on yleinen kohdistin, joka koskee kaikkia kokoelmatyyppejä — List Set ja Queue.

Iteraattorin julistus

julkisen käyttöliittymän iteraattori

Tässä E edustaa iteroitavien elementtien tyyppiä.



Iteratorin objektin luominen

Iterator-objekti luodaan kutsumalla kokoelmaobjektin iterator()-metodia. Tässä käytämme Iteraattoria jokaisen elementin läpi kulkemiseen ja tulostamiseen ArrayList .

Kokoelmanimet = uusi ArrayList<>();
Iteraattoriitr = nimet.iterator();

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

Lähtö
A B C 

Iteratorin hierarkia

Iteraattori on osa java.util-paketti ja kaikki kokoelmaluokat toteuttavat sen alirajapintojensa kautta.

listiterator_extends_iterator_' title=Iteraattori-kursori

Iteraattorirajapinnan menetelmät

Iteraattorin käyttöliittymä määrittelee kolme alla lueteltua menetelmää:

  • hasNext(): Palauttaa tosi, jos iteraatiossa on enemmän elementtejä.
  • seuraava(): Palauttaa iteroinnin seuraavan elementin. Se heittää NoSuchElementException jos elementtejä ei ole enempää.
  • poistaa(): Poistaa viimeisen elementin, jonka next() palauttaa. Tätä menetelmää voidaan kutsua vain kerran per kutsu next().

Huom : Remove() -menetelmä voi antaa kaksi poikkeusta, nimittäin seuraavasti:

Sisäinen työskentely

Tässä osiossa yritämme ymmärtää, kuinka Java Iterator ja sen menetelmät toimivat sisäisesti. Otetaan seuraava LinkedList-objekti ymmärtääksemme tämän toiminnon.

Vaihe 1: Luokaamme nyt Iterator-objekti List-objektiin alla olevan kuvan mukaisesti:

IteraattorikaupungitIterator = kaupungit.iteraattori();

"CitiesIteartor"-iteraattori näyttää seuraavalta:

csv-tiedosto lue java
Java Iterator Vaihe 1' loading='lazy' title=Vaihe-1

Tässä Iteratorin kohdistin osoittaa ennen luettelon ensimmäistä elementtiä.

Vaihe 2: Nyt suoritamme seuraavan koodinpätkän.

cityIterator.hasNext();
townsIterator.next();

Java Iterator Vaihe 2' loading='lazy' title=Vaihe-2

Kun suoritamme yllä olevan koodinpätkän, Iteratorin kohdistin osoittaa luettelon ensimmäiseen elementtiin yllä olevan kaavion mukaisesti.

t varvastossu

Vaihe 3: Nyt suoritamme seuraavan koodinpätkän.

cityIterator.hasNext();
townsIterator.next();

Java Iterator Vaihe 3' loading='lazy' title=Vaihe-3


Kun suoritamme yllä olevan koodinpätkän, Iteratorin kohdistin osoittaa luettelon toiseen elementtiin yllä olevan kaavion mukaisesti.

java-merkkijono sisältää

Vaihe 4: Tee tämä prosessi päästäksesi iteraattorin kohdistin luettelon loppuelementtiin.

Java Iterator Vaihe n' loading='lazy' title=Vaihe-4

Vaihe 5: Luettuaan viimeisen elementin, jos suoritamme alla olevan koodinpätkän, se palauttaa väärän arvon.

townsIterator.hasNext();

Java Iterator lopussa' loading='lazy' title=

Kuten Iteratorin kohdistin osoittaa luettelon viimeisen elementin jälkeen hasNext() menetelmä palauttaa väärän arvon.

Huomautus: Java Iterator tukee vain eteenpäin suuntautuvaa iteraatiota, joten se tunnetaan yksisuuntaisena kohdistimena. Sitä vastoin ListIterator on kaksisuuntainen ja mahdollistaa kulkemisen molempiin suuntiin.

Java-Ilterator-6' loading='lazy' title=Java Iterator: Eteenpäin suunta

Esimerkki: Tässä käytämme Iteraattoria kulkemaan ja poistamaan parittomat elementit ArrayLististä.

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

Lähtö
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] 

Selitys: Yllä olevassa esimerkissä luomme kokonaislukujen ArrayListin ja iteroimme sen läpi Iteraattorilla ja poistamme kaikki parittomat luvut. Se tulostaa luettelon ennen ja jälkeen parittomien elementtien poistamisen ja tulostaa muokatun luettelon vain parillisilla luvuilla.