Introduksjon til Iterator i Java

En Iterator er et grensesnitt som brukes til å hente elementer en etter en i en samling. Den er tilgjengelig i Java-pakken kalt Java. util-pakken. Samlings-API-en implementerer iterator () -metoden, og data kan følgelig hentes fra grensesnitt som Kart, Liste, Kø, Deque og Set, som alle implementeres fra samlingsrammen. Som navnet antyder, itererer en iterator i Java gjennom en samling objekter.

syntaks:

Iterator iterator()

Under iteratoren er navnet på et objekt opprettet ved å kalle iterator () metode for samlingsgrensesnitt. "Samling" er navnet på samleobjektet.

Iterator iter = collection.iterator();

Metoder for Iterator i Java

Iteratorer har 4 metoder i Java som brukes til å gå gjennom samlinger og hente nødvendig informasjon. De er som følger:

  • hasNext (): Dette er en metode som returnerer boolean true hvis iterasjonen har et neste element til stede og boolean falsk hvis det ikke er noe element tilstede neste.
  • neste (): Denne metoden returnerer elementverdien som er tilstede i den kommende iterasjonen. Anta at det ikke er noen elementer som skal returneres i neste iterasjon, så kastes en “NoSuchElementException”.
  • remove (): Denne metoden fjerner det nåværende elementet som returneres av iteratoren fra samlingen. I tilfelle denne metoden kalles forrige til neste () -metode, kaster den “IllegalStateException”.
  • forEachRemaining (): Denne metoden utfører operasjonen på alle de gjenværende elementene i samlingen til alle har blitt behandlet eller til et unntak kastes. Dette er også en metode som nylig ble introdusert av Oracle Corporation i deres Java SE 8-utgivelse.

Eksempel på Iterator i Java

Nedenfor er eksemplet på Iterator i Java:

Kode:

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

Produksjon:

Unntak kastet av Iterator Methods

I en liste over elementer kan en iterator hente informasjon bare om de eksisterende elementene. Det vil krasje eller kaste et unntak hvis det blir prøvd å få tilgang til et element som ikke er til stede i neste iterasjon. Her skal vi bli kjent med forskjellige typer unntak vi får mens vi implementerer iterator-metodene.

1. neste () -metode

Følgende unntak kan forekomme mens det iteres gjennom et sett med elementer og henter dem ved denne metoden.

  • NoSuchElementException: Dette skjer hvis neste () prøver å hente et element som ikke finnes i den nåværende listen. Derfor må alltid et hasNext () brukes før du ringer neste ().

2. fjerne () -metoden

Det er to typer unntak som kan forekomme her:

  • IllegalStateException: Hvis remove () -metoden kalles før neste () -metode, kastes dette unntaket. Dette er fordi metoden prøver å fjerne et element som ennå ikke er spesifisert av neste () -metode, og dermed mislykkes. For å løse dette unntaket, må neste () kalles for å referere til det første elementet, og deretter fjerne () kan kalles for å fjerne det samme fra listen.
  • UnsupportedOperationException: Dette unntaket blir vanligvis kastet når du prøver å endre et listeobjekt ved å legge til eller fjerne operasjon som ikke støtter modifisering. For eksempel når en matrise blir prøvd å konvertere til en liste av Arrays.asList kaster dette unntaket. Dette er fordi List-objektet har en fast størrelse ettersom det er opprettet av innpakningen fra ArrayList, og derfor vil ikke modifisering tillates. For å løse dette problemet, konverterer du Arrays.asList til ArrayList eller LinkedList-objektet før du utfører operasjoner som add / fjern på det samme.

syntaks:

//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();
)
)

Metoder for ListIterator

Disse metodene lar iteratoren krysse i begge retningene til samleobjektet. Følgende er noen av dem:

  • add (): Denne metoden setter inn den oppgitte objektverdien og returneres når neste () -metode kalles.
  • hasNext (): Denne metoden er den samme som den som er nevnt i iteratortyper som returnerer Boolean true / false avhengig av det neste elementet som har en verdi eller ikke.
  • hasPrevious (): Denne metoden er motsatt av hasNext () og returnerer Boolean true hvis listen har et tidligere element og omvendt.
  • neste (): Denne metoden henter det neste elementet fra den gitte listen.
  • forrige (): Denne metoden henter det forrige elementet fra listen.
  • remove (): Dette sletter det nåværende elementet fra listen. Når denne metoden kalles før neste () eller forrige () -funksjon, kaster den “IllegalStateException”.

Eksempel for ListIterator

Nedenfor er et eksempel i ArrayList for ListIterator.

Kode:

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

Produksjon:

Fordeler med Iterators i Java

Nedenfor er fordelene med Iterators:

  1. Den støtter alle klasser under samlingsgrensesnittet.
  2. Metodene til en iterator er ganske enkle og enkle å forstå og implementere.
  3. Elements of a Collection kan enkelt endres (legges til / fjernes) ved hjelp av Iterators.
  4. Å få tilgang til elementer gjennom Iterators vil ikke føre til unntak fra kjøretid.
  5. Datahåndtering er effektiv.
  6. Den kan iteres over forskjellige variabler samtidig ved å holde hver variabers iterasjonstilstand separat.

Begrensninger av Iterators i Java

Nedenfor er begrensningene til Iterators:

  1. Java iterator kan iterere bare i en retning, dvs. fremover.
  2. Det kan ikke brukes til å iterere mellom to forskjellige datastrukturer samtidig.
  3. Det kan ikke brukes til å slå tilbake et element.
  4. Det tillater ikke endring av strukturen til elementet som iteres, da det lagrer plasseringen til det.
  5. Kan være ineffektiv i noen tilfeller der det å gå direkte gjennom elementene er mer effektivt.

Konklusjon

Iteratorer er den mest brukte metoden for å hente elementer fra samlingsgrensesnittet. Det kalles Universal Java Cursor, da det er gjeldende i alle samlingsklassene.

Anbefalt artikkel

Dette er en guide til Iterator i Java. Her diskuterer vi metoder og eksempler på Iterator i Java sammen med dens begrensninger og fordeler. Du kan også gå gjennom andre foreslåtte artikler for å lære mer -

  1. Introduksjon til Heap Sort i Java
  2. Overstyring i Java (eksempler)
  3. Iteratorer i C # Med fordeler og ulemper
  4. Topp 10 intervjuspørsmål om Java Collection
  5. Kast vs kaster | Topp 5 forskjeller du burde vite