Introduktion til Iterator i Java

En Iterator er en grænseflade, der bruges til at hente elementer en efter en i en samling. Den er tilgængelig i Java-pakken kaldet Java. util pakke. Samlings-API'en implementerer iterator () -metoden, og data kan derfor hentes fra grænseflader som Kort, Liste, Kø, Deque og Sæt, som alle implementeres fra indsamlingsrammen. Som navnet antyder, itererer en iterator i Java gennem en samling objekter.

Syntaks:

Iterator iterator()

Under iteratoren er navnet på et objekt oprettet ved at kalde iterator () -metoden til indsamlingsgrænseflade. "Samling" er navnet på samleobjektet.

Iterator iter = collection.iterator();

Metoder til Iterator i Java

Iteratorer har 4 metoder i Java, som bruges til at gennemgå samlinger og hente de krævede oplysninger. De er som følger:

  • hasNext (): Dette er en metode, der returnerer boolsk sand, hvis iterationen har et næste element til stede og boolsk falsk, hvis der ikke er noget element til stede næste.
  • næste (): Denne metode returnerer elementværdien, der er til stede i den kommende iteration. Antag, at der ikke er nogen elementer, der skal returneres i den næste iteration, så kastes en “NoSuchElementException”.
  • fjern (): Denne metode fjerner det nuværende element, der returneres af iteratoren fra samlingen. I tilfælde af at denne metode kaldes forrige til næste () -metode, kaster den “IllegalStateException”.
  • forEachRemaining (): Denne metode udfører handlingen på alle de resterende elementer i samlingen, indtil alle af dem er behandlet, eller indtil en undtagelse kastes. Dette er også en metode, der nyligt blev introduceret af Oracle Corporation i deres Java SE 8-udgivelse.

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

Produktion:

Undtagelser kastet af Iterator Methods

I en liste over elementer kan en iterator kun hente information om de eksisterende elementer. Det vil gå ned eller kaste en undtagelse, hvis det forsøges at få adgang til et element, der ikke er til stede i den næste iteration. Her lærer vi de forskellige slags undtagelser, vi får, mens vi implementerer iterator-metoderne.

1. næste () -metode

Mens der gentages et sæt elementer og henter dem ved hjælp af denne metode, kan følgende undtagelse forekomme.

  • NoSuchElementException: Dette opstår, hvis næste () forsøger at hente et element, der ikke findes i den aktuelle liste. Derfor skal der altid bruges et hasNext (), inden du ringer til næste ().

2. fjern () -metoden

Der er 2 slags undtagelser, der kan forekomme her:

  • IllegalStateException: Hvis fjern-metoden kaldes før den næste () -metode, kastes denne undtagelse. Dette skyldes, at metoden forsøger at fjerne et element, der endnu ikke er specificeret ved den næste () -metode, og derfor mislykkes. For at løse denne undtagelse skal næste () kaldes for at henvise til det første emne og derefter fjerne () kan kaldes for at fjerne det samme fra listen.
  • UnsupportedOperationException: Denne undtagelse kastes normalt, når man prøver at ændre et listeobjekt ved at tilføje eller fjerne operation, som ikke understøtter ændring. F.eks. Når en matrix er forsøgt at konvertere til en liste af Arrays.asList kaster denne undtagelse. Dette skyldes, at List-objektet har en fast størrelse, da det oprettes af indpakningen fra ArrayList, og ændring vil derfor ikke være tilladt. For at løse dette problem skal du konvertere Arrays.asList til ArrayList eller LinkedList-objektet, før du udfører operationer som tilføj / 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 til ListIterator

Disse metoder gør det muligt for iteratoren at krydse i begge retninger af samleobjektet. Følgende er nogle af dem:

  • tilføj (): Denne metode indsætter den givne objektværdi og returneres, når den næste () metode kaldes.
  • hasNext (): Denne metode er den samme som den, der er nævnt i iteratortyper, der returnerer Boolsk sand / falsk afhængigt af det næste element, der har en værdi eller ej.
  • hasPrevious (): Denne metode er modsat hasNext () og returnerer Boolsk sand, hvis listen har et tidligere element og vice versa.
  • næste (): Denne metode henter det næste element fra den givne liste.
  • forrige (): Denne metode henter det forrige element fra listen.
  • fjern (): Dette sletter det nuværende element fra listen. Når denne metode kaldes enten inden næste () eller forrige () -funktion, kaster den “IllegalStateException”.

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

Produktion:

Fordele ved Iterators i Java

Nedenfor er fordelene ved Iterators:

  1. Det understøtter alle klasser under Collection-grænsefladen.
  2. Metoderne for en iterator er ganske enkle og lette at forstå og implementere.
  3. Elementerne i en samling kan let ændres (tilføj / fjern) ved hjælp af Iteratorer.
  4. Adgang til elementer gennem Iteratorer vil ikke føre til undtagelser fra køretid.
  5. Datahåndtering er effektiv.
  6. Det kan iterere over forskellige variabler samtidigt ved at holde hver variabers iterationstilstand separat.

Begrænsninger af Iteratorer i Java

Nedenfor er Iterators begrænsninger:

  1. Java iterator kan iterere kun i en retning, dvs. fremadretning.
  2. Det kan ikke bruges til at iterere mellem to forskellige datastrukturer samtidigt.
  3. Det kan ikke bruges til at trække et element tilbage.
  4. Det tillader ikke ændring af strukturen af ​​elementet, der bliver itereret, da det gemmer dets position.
  5. Måske være ineffektiv i visse tilfælde, hvor det at køre direkte gennem elementerne er mere effektivt.

Konklusion

Iteratorer er den mest anvendte metode til at hente elementer fra samlingsgrænsefladen. Det kaldes Universal Java Cursor, da det gælder i alle samlingsklasser.

Anbefalet artikel

Dette er en guide til Iterator i Java. Her diskuterer vi metoder og eksempler på Iterator i Java sammen med dens begrænsninger og fordele. Du kan også gennemgå vores andre foreslåede artikler for at lære mere -

  1. Introduktion til Heap Sort i Java
  2. Tilsidesættelse i Java (eksempler)
  3. Iteratorer i C # med fordele og ulemper
  4. Top 10 Java-samtalespørgsmål
  5. Kast vs kaster | Top 5 forskelle, du burde vide

Kategori: