Een Iterator in Java is een van de meest gebruikte cursors in het Java Collections Framework . Het wordt gebruikt om elementen van een verzameling één voor één te doorkruisen of te herhalen.
- Het wordt alleen gebruikt om elementen in voorwaartse richting te doorkruisen.
- Verwijdert elementen veilig tijdens het doorlopen met behulp van remove().
- Iterator is een universele cursor die van toepassing is op alle verzamelingstypen: Lijstset en Wachtrij.
Verklaring van Iterator
openbare interface Iterator
Hier vertegenwoordigt E het type elementen waarover moet worden herhaald.
Objectcreatie van Iterator
Een Iterator-object wordt gemaakt door de methode iterator() aan te roepen op een verzamelingsobject. Hier zullen we een Iterator gebruiken om elk element in een bestand te doorlopen en af te drukken ArrayLijst .
JavaVerzameling
namen = nieuwe ArrayList<>();
Iteratoritr = namen.iterator(); itererende kaart-Java
import java.util.ArrayList; import java.util.Iterator; public class Geeks { public static void main(String[] args) { // Create an ArrayList and add some elements ArrayList<String> al = new ArrayList<>(); al.add('A'); al.add('B'); al.add('C'); // Obtain an iterator for the ArrayList Iterator<String> it = al.iterator(); // Iterate through the elements and print each one while (it.hasNext()) { // Get the next element String n = it.next(); System.out.println(n); } } }
Uitvoer
A B C
Hiërarchie van Iterator
Iterator maakt deel uit van het java.util-pakket en wordt door alle verzamelklassen geïmplementeerd via hun subinterfaces.
Iterator-cursorMethoden van de iteratorinterface
De iteratorinterface definieert drie methoden, zoals hieronder vermeld:
- heeftVolgende(): Retourneert waar als de iteratie meer elementen bevat.
- volgende(): Retourneert het volgende element in de iteratie. Het gooit NoSuchElementException als er geen element meer aanwezig is.
- verwijderen(): Verwijdert het laatste element dat door next() wordt geretourneerd. Deze methode kan slechts één keer per aanroep van next() worden aangeroepen.
Opmerking : remove() methode kan twee uitzonderingen genereren, namelijk als volgt:
Intern werken
In deze sectie zullen we proberen te begrijpen hoe Java Iterator en zijn methoden intern werken. Laten we het volgende LinkedList-object nemen om deze functionaliteit te begrijpen.
Stap 1: Laten we nu een Iterator-object maken op het List-object, zoals hieronder weergegeven:
Iterator
stedenIterator = steden.iterator();
De 'citiesIteartor'-iterator ziet er als volgt uit:
Stap-1Hier wijst de cursor van Iterator naar het eerste element van de lijst.
Stap 2: Nu zullen we het volgende codefragment uitvoeren.
stedenIterator.hasNext();
stedenIterator.next();
Stap 2Wanneer we het bovenstaande codefragment uitvoeren, wijst de cursor van Iterator naar het eerste element in de lijst, zoals weergegeven in het bovenstaande diagram.
polymorfisme in Java
Stap 3: Nu zullen we het volgende codefragment uitvoeren.
stedenIterator.hasNext();
stedenIterator.next();
Stap-3
Wanneer we het bovenstaande codefragment uitvoeren, wijst de cursor van Iterator naar het tweede element in de lijst, zoals weergegeven in het bovenstaande diagram.
Stap 4: Voer dit proces uit om de cursor van de Iterator naar het eindelement van de lijst te brengen.
conversie van datum naar tekenreeks
Stap 4Stap 5: Als we na het lezen van het laatste element het onderstaande codefragment uitvoeren, retourneert het een valse waarde.
stedenIterator.hasNext();

Terwijl de cursor van Iterator naar het laatste element van de lijst wijst heeftVolgende() methode retourneert een valse waarde.
Opmerking: Java Iterator ondersteunt alleen iteratie in voorwaartse richting, dus het staat bekend als een unidirectionele cursor. ListIterator is daarentegen bidirectioneel, waardoor verplaatsing in beide richtingen mogelijk is.
Java-iterator: voorwaartse richtingVoorbeeld: Hier zullen we een Iterator gebruiken om oneven elementen uit een ArrayList te doorlopen en te verwijderen.
Javaimport java.util.ArrayList; import java.util.Iterator; public class Geeks { public static void main(String[] args) { // Creating an ArrayList of Integer type ArrayList<Integer> al = new ArrayList<>(); // Adding elements to the ArrayList for (int i = 0; i < 10; i++) { al.add(i); } // Printing the original list System.out.println('Original List: ' + al); // Creating an Iterator for the ArrayList Iterator<Integer> itr = al.iterator(); // Iterating through the list and removing odd elements while (itr.hasNext()) { // Getting the next element int i = itr.next(); System.out.print(i + ' '); // Removing odd elements if (i % 2 != 0) { itr.remove(); } } System.out.println(); // Printing the modified list after removal of odd elements System.out.println('Modified List: ' + al); } }
Uitvoer
Original List: [0 1 2 3 4 5 6 7 8 9] 0 1 2 3 4 5 6 7 8 9 Modified List: [0 2 4 6 8]
Uitleg: In het bovenstaande voorbeeld maken we een ArrayList met gehele getallen, doorlopen deze vervolgens met behulp van een Iterator en verwijderen alle oneven getallen. Het drukt de lijst af voor en na het verwijderen van de oneven elementen en drukt de gewijzigde lijst af met alleen even getallen.