Introduktion till Iterator i Java

En Iterator är ett gränssnitt som används för att hämta element en efter en i en samling. Det finns i Java-paket som heter Java. utnyttja paketet. Samlings-API: et implementerar metoden iterator () och därmed kan data hämtas från gränssnitt som Map, List, Queue, Deque och Set som alla implementeras från samlingsramen. Som namnet antyder, iterererar en iterator i Java genom en samling objekt.

Syntax:

Iterator iterator()

Under iteratorn är namnet på ett objekt skapat genom att kalla iterator () -metoden för samlingsgränssnitt. "Samling" är namnet på samlingsobjektet.

Iterator iter = collection.iterator();

Metoder för Iterator i Java

Iteratorer har 4 metoder i Java som används för att gå igenom samlingar och hämta erforderlig information. De är som följer:

  • hasNext (): Detta är en metod som returnerar boolean true om iterationen har ett nästa element närvarande och boolean falskt om det inte finns något element nästa.
  • nästa (): Denna metod returnerar elementvärdet som finns i kommande iteration. Anta att det inte finns några element som ska returneras i nästa iteration och sedan kastas en "NoSuchElementException".
  • ta bort (): Den här metoden tar bort det nuvarande elementet som returneras av iteratorn från samlingen. Om denna metod kallas föregående till nästa () -metod kastar den "IllegalStateException".
  • forEachRemaining (): Den här metoden kör operationen på alla återstående element i samlingen tills alla har bearbetats eller tills ett undantag kastas. Detta är också en metod som nyligen introducerats av Oracle Corporation i deras Java SE 8-version.

Exempel på Iterator i Java

Nedan är exemplet på Iterator i Java:

Koda:

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:

Undantag som kastas av Iterator Methods

I en lista över element kan en iterator hämta information endast om de befintliga elementen. Det kommer att krascha eller kasta ett undantag om det försöks få åtkomst till ett element som inte finns i nästa iteration. Här ska vi lära känna de olika slags undantag vi får när vi implementerar iteratormetoderna.

1. nästa () -metod

Medan det iteras med en uppsättning element och hämtar dem med denna metod, kan följande undantag inträffa.

  • NoSuchElementException: Detta inträffar om nästa () försöker hämta ett element som inte finns i den aktuella listan. Därför måste alltid ett hasNext () användas innan du ringer nästa ().

2. ta bort metoden

Det finns två typer av undantag som kan uppstå här:

  • IllegalStateException: Om metoden remove () kallas före nästa () -metod kastas detta undantag. Detta beror på att metoden försöker ta bort ett element som ännu inte specificeras av nästa () -metod och därmed misslyckas. För att lösa detta undantag måste nästa () kallas för att hänvisa till det första objektet och sedan ta bort () kan kallas för att ta bort detsamma från listan.
  • UnsupportedOperationException: Detta undantag kastas vanligtvis när man försöker modifiera ett listobjekt genom att lägga till eller ta bort operation som inte stöder modifiering. Till exempel, när en matris försöks konvertera till en lista av Arrays.asList kastar detta undantag. Detta beror på att Listobjektet har en fast storlek eftersom det skapas av omslaget från ArrayList och därför kommer modifiering inte att tillåtas. För att lösa det här problemet konverterar du Arrays.asList till ArrayList eller LinkedList-objektet innan du utför några åtgärder som add / remove på samma.

Syntax:

//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 för ListIterator

Dessa metoder tillåter iteratorn att korsa i båda riktningarna för uppsamlingsobjektet. Följande är några av dem:

  • add (): Denna metod sätter in det angivna objektvärdet och returneras när nästa () -metod anropas.
  • hasNext (): Denna metod är densamma som den som nämns i iteratortyper som returnerar Boolean true / false beroende på nästa element som har ett värde eller inte.
  • hasPrevious (): Den här metoden är motsatt av hasNext () och returnerar Boolean true om listan har ett tidigare element och vice versa.
  • nästa (): Den här metoden hämtar nästa element från den givna listan.
  • föregående (): Den här metoden hämtar det föregående elementet från listan.
  • ta bort (): Detta raderar det nuvarande elementet från listan. När denna metod kallas antingen före nästa () eller föregående () -funktion, kastar den “IllegalStateException”.

Exempel för ListIterator

Nedan är ett exempel i ArrayList för ListIterator.

Koda:

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:

Fördelar med Iterators i Java

Nedan är fördelarna med Iterators:

  1. Det stöder alla klasser under samlingsgränssnittet.
  2. Metoderna för en iterator är ganska enkla och lätta att förstå och implementera.
  3. Element i en samling kan enkelt ändras (lägg till / ta bort) med Iteratorer.
  4. Att få tillgång till element via Iterators leder inte till undantag för körning.
  5. Datahantering är effektiv.
  6. Det kan iterera över olika variabler samtidigt genom att hålla varje variabels iterationstillstånd separat.

Begränsningar av Iteratorer i Java

Nedan är Iterators begränsningar:

  1. Java-iterator kan iterera endast i en riktning, dvs framåt.
  2. Det kan inte användas för att iterera mellan två olika datastrukturer samtidigt.
  3. Det kan inte användas för att backa upp ett element.
  4. Det tillåter inte modifiering av strukturen för elementet som itereras eftersom det lagrar positionen för det.
  5. Kan vara ineffektivt i vissa fall var det att gå igenom elementen direkt är mer effektivt.

Slutsats

Iteratorer är den vanligaste metoden för att hämta element från samlingsgränssnittet. Det kallas Universal Java Cursor eftersom det är tillämpligt i alla samlingsklasser.

Rekommenderad artikel

Detta är en guide till Iterator i Java. Här diskuterar vi metoder och exempel på Iterator i Java tillsammans med dess begränsningar och fördelar. Du kan också gå igenom våra andra föreslagna artiklar för att lära dig mer -

  1. Introduktion till Heap Sort i Java
  2. Överskridande i Java (exempel)
  3. Iteratorer i C # med fördelar och nackdelar
  4. Topp 10 intervjufrågor för Java Collection
  5. Kast vs kastar | Topp 5 skillnader du borde veta

Kategori: