Johdatus Java-sivun iteraattoriin

Iterator on käyttöliittymä, jota käytetään hakemaan elementtejä kerrallaan. Se on saatavana Java-paketissa nimeltään Java. util-paketti. Keräilysovellusliittymä toteuttaa iterator () -menetelmän, joten tietoja voidaan hakea rajapinnoista, kuten Kartta, Lista, Jono, Deque ja Set, jotka kaikki toteutetaan keräyskehyksestä. Kuten nimestä voi päätellä, Java-iteraattori toistuu objektien kokoelman kautta.

Syntaksi:

Iterator iterator()

Iteraattorin alla on objektin nimi, joka on luotu kutsumalla iterator () -menetelmä keräysrajapintaan. ”Kokoelma” on kokoelmaobjektin nimi.

Iterator iter = collection.iterator();

Iteraattorin menetelmät Java

Iteraattoreilla on 4 Java-menetelmää, joilla käydään läpi kokoelmia ja haetaan tarvittavat tiedot. Ne ovat seuraavat:

  • hasNext (): Tämä on menetelmä, joka palauttaa boolean true, jos iteraatiossa on seuraava elementti, ja boolean false, jos seuraavassa ei ole mitään elementtiä.
  • seuraava (): Tämä menetelmä palauttaa tulevassa iteraatiossa esiintyvän elementin arvon. Oletetaan, että seuraavassa iteraatiossa ei ole palautettavia elementtejä, sitten “NoSuchElementException” heitetään.
  • poista (): Tämä menetelmä poistaa iteraattorin palauttaman nykyisen elementin kokoelmasta. Jos tätä menetelmää kutsutaan edelliseksi seuraavaksi () -menetelmäksi, se heittää ”IllegalStateException”.
  • forEachRemaining (): Tämä menetelmä suorittaa operaation kaikille kokoelman jäljellä oleville elementeille, kunnes kaikki ne on käsitelty tai kunnes poikkeus on heitetty. Tämä on myös menetelmä, jonka Oracle Corporation esitteli hiljattain Java SE 8 -julkaisussaan.

Esimerkki Java-sivun iteraattorista

Alla on esimerkki Java-sivun Iteratorista:

Koodi:

import java.io.*;
import java.util.*;
public class IteratorExample (
public static void main(String() args)
(
ArrayList val = new ArrayList();
val.add("Iteration started");
val.add("Printing iteration1");
val.add("Printing iteration2");
val.add("Printing iteration3");
val.add("End of iteration");
// Iterates through the list
Iterator iter = val.iterator();
System.out.println("The values of iteration are as follows: ");
while (iter.hasNext())
System.out.println(iter.next() + " ");
System.out.println();
)
)

lähtö:

Iterator Methodsin aiheuttamat poikkeukset

Elementtiluettelossa iteraattori voi hakea tietoja vain olemassa olevista elementeistä. Se kaatuu tai heittää poikkeuksen, jos yritetään käyttää elementtiä, jota ei ole seuraavassa iteraatiossa. Täällä tutustutaan erityyppisiin poikkeuksiin, joita saamme toteutettaessa iteraattorimenetelmiä.

1. seuraava () menetelmä

Vaikka iteroidaan joukon elementtejä ja haetaan ne tällä menetelmällä, seuraavaa poikkeusta voi tapahtua.

  • NoSuchElementException: Tämä tapahtuu, jos seuraava () yrittää hakea elementin, jota ei ole nykyisessä luettelossa. Siksi aina hasNext () on käytettävä ennen seuraavan () soittamista.

2. poista () -menetelmä

Täällä voi esiintyä 2 tyyppisiä poikkeuksia:

  • IllegalStateException: Jos poistamismenetelmää kutsutaan ennen seuraavaa () -menetelmää, tämä poikkeus heitetään pois. Tämä johtuu siitä, että menetelmä yrittää poistaa elementin, jota ei ole vielä määritetty seuraavassa () menetelmässä, ja siten epäonnistuu. Tämän poikkeuksen ratkaisemiseksi seuraavaa () täytyy kutsua viitaamaan ensimmäiseen kohtaan ja sitten poistaa () voidaan kutsua poistamaan se luettelosta.
  • UnsupportedOperationException: Tämä poikkeus heitetään yleensä, kun yritetään muokata luetteloobjektia lisäämällä tai poistamalla toiminto, joka ei tue muokkausta. Esimerkiksi, kun Arrays.asList yrittää muuntaa taulukon luetteloon, se poistaa tämän poikkeuksen. Tämä johtuu siitä, että Lista -objektilla on kiinteä koko, koska sen on luonut kääre ArrayLististä, joten muokkaaminen ei ole sallittua. Voit ratkaista tämän ongelman muuntamalla Arrays.asList ArrayList- tai LinkedList-objektiin ennen kuin suoritat samanlaisia ​​toimintoja, kuten lisää / poista.

Syntaksi:

//ArrayList is created from the list having fixed size
list = new ArrayList(list);
Iterator iter = list.iterator();
while(iter.hasNext())(
if( iter.next().equals("First iteration") )(
iter.remove();
)
)

ListaIteraattorin menetelmät

Nämä menetelmät sallivat iteraattorin kulkea molemmissa suunnissa keräyskohteessa. Seuraavassa on joitain niistä:

  • add (): Tämä menetelmä lisää annetun objektiarvon ja palautetaan, kun seuraava () menetelmä kutsutaan.
  • hasNext (): Tämä menetelmä on sama kuin iteraattorityypeissä mainittu, mikä palauttaa Boolen tosi / epätosi riippuen seuraavasta elementistä, jolla on arvo tai ei.
  • hasPrevable (): Tämä menetelmä on päinvastainen kuin hasNext () ja palauttaa Boolen totuuden, jos luettelossa on edellinen elementti, ja päinvastoin.
  • seuraava (): Tämä menetelmä hakee seuraavan elementin annetusta luettelosta.
  • edellinen (): Tämä menetelmä hakee edellisen elementin luettelosta.
  • poista (): Tämä poistaa nykyisen elementin luettelosta. Kun tätä menetelmää kutsutaan joko ennen seuraavaa () tai edellinen () -toimintoa, se heittää ”IllegalStateException”.

Esimerkki ListIteratorille

Alla on esimerkki ArrayList for ListIterator -sovelluksesta.

Koodi:

import java.util.*;
public class IteratorExample (
public static void main(String args()) (
// Creating an array list
ArrayList array = new ArrayList();
// add elements to the array list
array.add("First element");
array.add("Second element");
array.add("Third element");
array.add("Fourth element");
array.add("Fifth element");
array.add("Sixth element");
// Displaying elements of an array
System.out.println("Printing input of the array: ");
Iterator iter = array.iterator();
while(iter.hasNext()) (
Object value = iter.next();
System.out.println(value + " ");
)
System.out.println();
// To update the elements of iteration
ListIterator listiter = array.listIterator();
while(listiter.hasNext()) (
Object value = listiter.next();
listiter.set(value + "+");
)
System.out.print("Updated array elements are as follows: ");
iter = array.iterator();
while(iter.hasNext()) (
Object value = iter.next();
System.out.print(value + " ");
)
System.out.println("\n");
// To display the contents in backward direction
System.out.println("Printing elements in backward direction: ");
while(listiter.hasPrevious()) (
Object value = listiter.previous();
System.out.print(value + " ");
)
System.out.println();
)
)

lähtö:

Iteraattorien edut Java-ohjelmassa

Alla on iteraattoreiden edut:

  1. Se tukee kaikkia Collection-käyttöliittymän luokkia.
  2. Toistimen menetelmät ovat melko yksinkertaisia ​​ja helppo ymmärtää ja toteuttaa.
  3. Kokoelman elementtejä voidaan helposti muokata (lisätä / poistaa) Iteraattoreilla.
  4. Elementteihin pääsy Iteratorien kautta ei johda ajoajan poikkeuksiin.
  5. Tietojenkäsittely on tehokasta.
  6. Se voi toistua useiden muuttujien yli samanaikaisesti pitämällä kunkin muuttujan iterointitilaa erikseen.

Iteraattoreiden rajoitukset Java-ohjelmassa

Alla on iteraattoreiden rajoitukset:

  1. Java-iteraattori voi iteroida vain yhteen suuntaan eli eteenpäin.
  2. Sitä ei voida käyttää iteroimaan kahden eri tietorakenteen välillä samanaikaisesti.
  3. Sitä ei voida käyttää elementin takaisinottoon.
  4. Se ei salli toistettavan elementin rakenteen muuttamista, koska se tallentaa sen sijainnin.
  5. Voi olla tehoton tietyissä tapauksissa, jos elementtien läpi kulkeminen on tehokkaampaa.

johtopäätös

Iteraattorit ovat yleisimmin käytetty menetelmä elementtien hakemiseen keräysrajapinnasta. Sitä kutsutaan Universal Java -kohdistimeksi, koska sitä voidaan soveltaa kaikissa Collection-luokissa.

Suositeltava artikkeli

Tämä on opas Iteratoriin Java-kielellä. Tässä keskustellaan Java-menetelmän menetelmistä ja esimerkistä Iteratorista sekä sen rajoituksista ja eduista. Voit myös käydä läpi muiden ehdotettujen artikkeleidemme saadaksesi lisätietoja -

  1. Johdatus Java-lajitteluun
  2. Ohittaminen Java-ohjelmassa (esimerkit)
  3. C #: n iteraattorit, joilla on etuja ja haittoja
  4. 10 suosituinta Java-kokoelmahaastattelukysymystä
  5. Heitä vs heittää | 5 suosituinta eroa, jotka sinun pitäisi tietää