Úvod do Iterator v Jave

Iterátor je rozhranie, ktoré sa používa na získavanie prvkov jeden po druhom v kolekcii. Je k dispozícii v balíku Java s názvom Java. využiť balík. Kolekčné API implementuje metódu iterator (), a preto je možné dáta získavať z rozhraní ako Map, List, Queue, Deque a Set, ktoré sú všetky implementované z rámca kolekcie. Ako už názov napovedá, iterátor v Java iteruje prostredníctvom zbierky objektov.

syntaxe:

Iterator iterator()

Pod iterátorom je názov objektu vytvoreného volaním metódy rozhrania kolekcie iterator (). „Collection“ je názov objektu zbierky.

Iterator iter = collection.iterator();

Metódy Iterátora v Jave

Iterátory majú v jazyku Java štyri metódy, ktoré sa používajú na prechádzanie zbierkami a získavanie požadovaných informácií. Sú to tieto:

  • hasNext (): Toto je metóda, ktorá vracia boolean true, ak iterácia obsahuje ďalší element a boolean false, ak nie je prítomný žiadny element.
  • next (): Táto metóda vracia hodnotu prvku prítomnú v nadchádzajúcej iterácii. Predpokladajme, že v ďalšej iterácii nie sú vrátené žiadne prvky, potom sa vyvolá „NoSuchElementException“.
  • remove (): Táto metóda odstráni súčasný prvok vrátený iterátorom z kolekcie. V prípade, že sa táto metóda volá pred nasledujúcou () metódou, vyvolá „IllegalStateException“.
  • forEachRemaining (): Táto metóda vykonáva operáciu na všetkých zvyšných prvkoch v kolekcii, kým nie sú všetky spracované alebo kým nie je vyvolaná výnimka. Toto je tiež metóda, ktorú spoločnosť Oracle Corporation nedávno predstavila vo svojom vydaní Java SE 8.

Príklad Iterátora v Jave

Nižšie je uvedený príklad Iterátora v Jave:

kód:

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

Výkon:

Výnimky vyvolané metódami iterátora

V zozname prvkov môže iterátor načítať informácie iba o existujúcich prvkoch. Zlyhá alebo vyvolá výnimku, ak sa pokúsi získať prístup k prvku, ktorý sa nenachádza v nasledujúcej iterácii. Tu sa zoznámime s rôznymi druhmi výnimiek, ktoré získame pri implementácii metód iterátora.

1. ďalšia metóda ()

Počas opakovania súboru prvkov a ich získavania touto metódou sa môže vyskytnúť nasledujúca výnimka.

  • NoSuchElementException: Toto nastane, ak sa next () pokúsi načítať prvok, ktorý v tomto zozname neexistuje. Preto musí byť vždy použité hasNext () pred volaním next ().

2. metóda remove ()

Tu sa môžu vyskytnúť 2 druhy výnimiek:

  • IllegalStateException: Ak je metóda remove () volaná pred metódou next (), táto výnimka je vyvolaná. Je to preto, že táto metóda sa pokúša odstrániť prvok, ktorý ešte nie je špecifikovaný nasledujúcou metódou (), a preto zlyhá. Ak chcete túto výnimku vyriešiť, musíte zavolať next (), aby ste odkazovali na prvú položku, a potom môžete zavolať Remove (), aby ste ju odstránili zo zoznamu.
  • UnsupportedOperationException: Táto výnimka sa zvyčajne vyvolá pri pokuse o zmenu objektu zoznamu pridaním alebo odstránením operácie, ktorá nepodporuje zmenu. Napríklad, keď sa pole pokúsi previesť do zoznamu pomocou Arrays.asList, vyvolá túto výnimku. Dôvodom je, že objekt List bude mať pevnú veľkosť, pretože je vytvorený obalom z ArrayList, a preto nebude povolená modifikácia. Ak chcete tento problém vyriešiť, skontrolujte objekt Arrays.asList na objekt ArrayList alebo LinkedList pred vykonaním akýchkoľvek operácií, ako je napríklad pridanie alebo odstránenie.

syntaxe:

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

Metódy ListIterator

Tieto metódy umožňujú iterátoru prechádzať v oboch smeroch objektu kolekcie. Nasleduje niekoľko z nich:

  • add (): Táto metóda vloží zadanú hodnotu objektu a vráti sa, keď sa volá ďalšia metóda ().
  • hasNext (): Táto metóda je rovnaká ako metóda uvedená v typoch iterátorov, ktorá vracia booleovskú hodnotu true / false v závislosti od toho, či má ďalší prvok hodnotu alebo nie.
  • hasPrevious (): Táto metóda je opačná ako hasNext () a vracia Boolean true, ak zoznam obsahuje predchádzajúci prvok a naopak.
  • next (): Táto metóda načíta ďalší prvok z daného zoznamu.
  • previous (): Táto metóda načíta predchádzajúci prvok zo zoznamu.
  • remove (): Týmto sa odstráni súčasný prvok zo zoznamu. Ak sa táto metóda volá buď pred funkciou next () alebo previous (), vyvolá „IllegalStateException“.

Príklad pre ListIterator

Nižšie je uvedený príklad v poli ArrayList for ListIterator.

kód:

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

Výkon:

Výhody Iterátorov v Jave

Výhody Iterátorov sú nižšie:

  1. Podporuje všetky triedy pod rozhraním Zbierka.
  2. Metódy iterátora sú pomerne jednoduché a ľahko zrozumiteľné a implementovateľné.
  3. Prvky zbierky je možné ľahko modifikovať (pridať / odstrániť) pomocou Iterátorov.
  4. Prístup k prvkom prostredníctvom Iterátorov nepovedie k výnimkám za behu.
  5. Manipulácia s údajmi je efektívna.
  6. Môže iterovať súčasne rôzne premenné tým, že drží iteratívny stav každej premennej osobitne.

Obmedzenia Iterátorov v Jave

Nižšie sú uvedené obmedzenia Iterátorov:

  1. Java iterátor môže iterovať iba jedným smerom, tj smerom dopredu.
  2. Nedá sa použiť na iteráciu medzi dvoma rôznymi dátovými štruktúrami súčasne.
  3. Nemôže sa použiť na spätné sledovanie prvku.
  4. Nepovoľuje úpravu štruktúry prvku, ktorý je iterovaný, pretože ukladá jeho polohu.
  5. Môže byť v niektorých prípadoch neefektívne, keď priamy prechod cez jednotlivé prvky je efektívnejší.

záver

Iterátory sú najbežnejšie používanou metódou získavania prvkov z kolekčného rozhrania. Nazýva sa Universal Java Cursor, pretože je použiteľný vo všetkých triedach Zbierka.

Odporúčaný článok

Toto je sprievodca Iterátorom v Jave. Tu diskutujeme metódy a príklady Iterátora v Jave spolu s jeho obmedzeniami a výhodami. Viac informácií nájdete aj v ďalších navrhovaných článkoch -

  1. Úvod do triedenia haldy v jazyku Java
  2. Prepísanie v jazyku Java (príklady)
  3. Iterátory v C # s výhodami a nevýhodami
  4. Top 10 otázok Java Interview
  5. Hodiť vs Hodí | Top 5 rozdielov, ktoré by ste mali vedieť

Kategórie: