Introductie tot Iterator in Java

Een Iterator is een interface die wordt gebruikt om elementen één voor één in een verzameling op te halen. Het is beschikbaar in het Java-pakket genaamd Java. gebruik pakket. De collectie-API implementeert de iterator () -methode en daarom kunnen gegevens worden opgehaald uit interfaces zoals Map, List, Queue, Deque en Set die allemaal worden geïmplementeerd vanuit het collection-framework. Zoals de naam al doet vermoeden, itereert een iterator op Java door een verzameling objecten.

Syntaxis:

Iterator iterator()

Onder de iterator staat de naam van een object dat is gemaakt door de methode iterator () van de verzamelinginterface aan te roepen. "Collection" is de naam van het collectieobject.

Iterator iter = collection.iterator();

Methoden van Iterator in Java

Iterators hebben 4 methoden in Java die worden gebruikt om door collecties te bladeren en de vereiste informatie op te halen. Ze zijn als volgt:

  • hasNext (): Dit is een methode die boolean true retourneert als voor de iteratie een volgend element aanwezig is en boolean false als er geen element aanwezig is.
  • next (): deze methode retourneert de elementwaarde die aanwezig is in de komende iteratie. Stel dat er geen elementen worden geretourneerd in de volgende iteratie, dan wordt een "NoSuchElementException" gegenereerd.
  • remove (): deze methode verwijdert het huidige element dat door de iterator wordt geretourneerd uit de verzameling. In het geval dat deze methode de vorige naar de volgende () methode wordt genoemd, wordt "IllegalStateException" gegenereerd.
  • forEachRemaining (): deze methode voert de bewerking uit op alle resterende elementen in de verzameling totdat ze allemaal zijn verwerkt of totdat een uitzondering is opgetreden. Dit is ook een methode die nieuw is geïntroduceerd door Oracle Corporation in hun Java SE 8-release.

Voorbeeld van Iterator in Java

Hieronder is het voorbeeld van Iterator in Java:

Code:

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

Output:

Uitzonderingen gegooid door Iterator Methods

In een lijst met elementen kan een iterator alleen informatie over de bestaande elementen ophalen. Het zal crashen of een uitzondering genereren als wordt geprobeerd toegang te krijgen tot een element dat niet aanwezig is in de volgende iteratie. Hier zullen we de verschillende soorten uitzonderingen leren kennen die we krijgen bij het implementeren van de iterator-methoden.

1. volgende () methode

Tijdens het doorlopen van een reeks elementen en het ophalen van deze elementen met deze methode, kan de volgende uitzondering optreden.

  • NoSuchElementException: dit gebeurt als next () probeert een element op te halen dat niet bestaat in de huidige lijst. Daarom moet altijd een hasNext () worden gebruikt voordat next () wordt aangeroepen.

2. verwijder () methode

Er zijn 2 soorten uitzonderingen die hier kunnen voorkomen:

  • IllegalStateException: als de methode remove () wordt aangeroepen vóór de methode next (), wordt deze uitzondering gegenereerd. Dit komt omdat de methode probeert een element te verwijderen dat nog niet is opgegeven door de methode next () en daarom mislukt. Om deze uitzondering op te lossen, moet next () worden aangeroepen om naar het eerste item te verwijzen en dan remove () kan worden aangeroepen om hetzelfde uit de lijst te verwijderen.
  • UnsupportedOperationException: deze uitzondering wordt meestal gegenereerd wanneer wordt geprobeerd een lijstobject te wijzigen door een bewerking toe te voegen of te verwijderen die geen modificatie ondersteunt. Wanneer een array bijvoorbeeld door Arrays wordt geprobeerd om te zetten in een lijst. Deze uitzondering wordt gegenereerd. Dit komt omdat het List-object een vaste grootte heeft omdat het wordt gemaakt door de wrapper van ArrayList en daarom is wijziging niet toegestaan. Om dit probleem op te lossen, converteert u het Arrays.asList naar ArrayList of LinkedList-object voordat u bewerkingen zoals toevoegen / verwijderen op hetzelfde uitvoert.

Syntaxis:

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

Methoden van ListIterator

Met deze methoden kan de iterator zich in beide richtingen van het verzamelobject verplaatsen. Hier volgen enkele van hen:

  • add (): deze methode voegt de gegeven objectwaarde in en wordt geretourneerd wanneer de volgende () -methode wordt aangeroepen.
  • hasNext (): deze methode is dezelfde als die wordt vermeld in iteratortypes die Booleaanse waar / onwaar retourneert, afhankelijk van het volgende element met een waarde of niet.
  • hasPrevious (): deze methode is tegengesteld aan hasNext () en retourneert Boolean true als de lijst een vorig element heeft en vice versa.
  • next (): Met deze methode wordt het volgende element uit de gegeven lijst opgehaald.
  • vorige (): met deze methode wordt het vorige element uit de lijst opgehaald.
  • remove (): hiermee wordt het huidige element uit de lijst verwijderd. Wanneer deze methode wordt aangeroepen vóór de functie next () of previous (), wordt "IllegalStateException" gegenereerd.

Voorbeeld voor ListIterator

Hieronder is een voorbeeld in ArrayList voor ListIterator.

Code:

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

Output:

Voordelen van Iterators op Java

Hieronder staan ​​de voordelen van Iterators:

  1. Het ondersteunt alle klassen onder de Collection-interface.
  2. De methoden van een iterator zijn vrij eenvoudig en gemakkelijk te begrijpen en te implementeren.
  3. Elementen van een verzameling kunnen eenvoudig worden aangepast (toevoegen / verwijderen) met behulp van Iterators.
  4. Toegang tot elementen via Iterators leidt niet tot runtime-uitzonderingen.
  5. Gegevensverwerking is efficiënt.
  6. Het kan verschillende variabelen tegelijkertijd herhalen door de iteratiestatus van elke variabele afzonderlijk te houden.

Beperkingen van Iterators op Java

Hieronder staan ​​de beperkingen van Iterators:

  1. Java iterator kan slechts in één richting itereren, dwz voorwaartse richting.
  2. Het kan niet worden gebruikt om gelijktijdig tussen twee verschillende gegevensstructuren te itereren.
  3. Het kan niet worden gebruikt om een ​​element terug te vinden.
  4. Het laat geen wijziging toe van de structuur van het element dat wordt herhaald, omdat het de positie ervan opslaat.
  5. Zou in bepaalde gevallen inefficiënt kunnen zijn, wanneer het rechtstreeks door de elementen heen gaan efficiënter is.

Conclusie

Iterators zijn de meest gebruikte methode om elementen uit de verzamelinginterface op te halen. Het wordt Universal Java Cursor genoemd omdat het van toepassing is op alle verzamelklassen.

Aanbevolen artikel

Dit is een gids voor Iterator op Java. Hier bespreken we methoden en voorbeelden van Iterator in Java, samen met zijn beperkingen en voordelen. U kunt ook onze andere voorgestelde artikelen doornemen voor meer informatie -

  1. Inleiding tot Heap Sort in Java
  2. Overschrijven in Java (voorbeelden)
  3. Iterators in C # met voor- en nadelen
  4. Top 10 Java-sollicitatievragen
  5. Gooien versus Gooien | Top 5 verschillen die u moet weten