Bevezetés az Java Iterátorba

Az Iterator egy olyan felület, amelyet az elemek egyenkénti lekérésére használnak a gyűjteményben. Ez a Java nevű Java csomagban érhető el. util csomag. A gyűjtemény API végrehajtja az iterator () metódust, és így az adatok olyan interfészekből származnak, mint például Térkép, Lista, Queue, Deque és Set, amelyek mindegyike a gyűjtemény keretén belül valósul meg. Ahogy a neve is sugallja, a Java-ban egy iterátor objektumok gyűjteményén keresztül jár.

Szintaxis:

Iterator iterator()

Az iterator alatt található egy objektum neve, amelyet az iterator () metódus-felület meghívásával hoztak létre. A „gyűjtemény” a gyűjtemény tárgy neve.

Iterator iter = collection.iterator();

Iterator módszerei Java-ban

Az Iteratoroknak 4 módszere van a Java-ban, amelyeket a gyűjtemények átjárására és a szükséges információk begyűjtésére használnak. Ezek a következők:

  • hasNext (): Ez egy olyan módszer, amely a boolean true értékre ad visszaadást, ha az iterációban van egy következő elem jelen, és boolean false, ha a következő elemnél nincs jelen elem.
  • következő (): Ez a módszer visszaadja az elem értékét a következő iterációban. Tegyük fel, hogy a következő iterációban nincsenek visszatérő elemek, akkor a „NoSuchElementException” eldobásra kerül.
  • remove (): Ez a módszer eltávolítja az iterator által visszaadott jelenlegi elemet a gyűjteményből. Abban az esetben, ha ezt a módszert a következő () módszer előzőjének hívják, akkor az „IllegalStateException” lesz.
  • forEachRemaining (): Ez a módszer a gyűjtemény összes többi elemével végrehajtja a műveletet mindaddig, amíg az összeset nem dolgozták fel, vagy amíg egy kivétel el nem dobják. Ez is egy módszer, amelyet az Oracle Corporation a Java SE 8 kiadásában újonnan bevezetett.

Példa az Iterator Java-ra

Az alábbiakban egy példa az Java Iteratorra:

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

Kimenet:

Az Iterator Methods által kiváltott kivételek

Az elemek listájában az iterator csak a meglévő elemekről tud információt letölteni. Összeomlik vagy kivételt képez, ha olyan elemhez próbál hozzáférni, amely a következő iterációban nincs jelen. Itt megismerjük a kivételek különféle típusait, amelyeket az iterator módszerek végrehajtása során kapunk.

1. következő () módszer

Miközben egy elemcsoporton keresztül iterál, és ezzel a módszerrel vonzza le őket, a következő kivétel fordulhat elő.

  • NoSuchElementException: Ez akkor fordul elő, ha a következő () megkísérli lekérdezni egy elemet, amely a jelen listában nem létezik. Ezért mindig a hasNext () -et kell használni a következő () hívás előtt.

2. az () módszer eltávolítása

Kétféle kivétel létezik, amelyek itt fordulhatnak elő:

  • IllegalStateException: Ha az remove () metódust a következő () metódus előtt hívják meg, akkor ezt a kivételt eldobják. Ennek oka az, hogy a módszer megkísérel eltávolítani egy elemet, amelyet a következő () módszer még nem határoz meg, és ezért kudarcot vall. Ennek a kivételnek a megoldása érdekében a következő () -et fel kell hívni, hogy utaljon az első elemre, majd az eltávolításra () hívható, hogy eltávolítsa azt a listáról.
  • UnsupportedOperationException: Ezt a kivételt általában akkor dobják el, ha egy listaobjektumot megpróbálnak módosítani olyan hozzáadás vagy eltávolítás művelettel, amely nem támogatja a módosítást. Például, ha egy tömböt az Arrays.asList megkísérel konvertálni listává, akkor ezt a kivételt dobja. Ennek oka az, hogy a Lista objektum rögzített méretű lesz, mivel azt az ArrayList csomagolója hozza létre, és ezért a módosítás nem engedélyezett. A probléma megoldásához konvertálja az Arrays.asList fájlt ArrayList vagy LinkedList objektumba, mielőtt bármilyen műveletet végrehajtana, mint például a hozzáadás / eltávolítás.

Szintaxis:

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

A ListIterator módszerei

Ezek a módszerek lehetővé teszik az iterator számára, hogy a gyűjtőobjektum mindkét irányában mozogjon. Az alábbiakban néhány ezek közül:

  • add (): Ez a módszer beszúrja a megadott objektum értéket, és a következő () metódus meghívásakor ad vissza.
  • hasNext (): Ez a módszer megegyezik az iterator típusokban említett módszerrel, amely igaz / hamis logikai értékeket ad vissza, attól függően, hogy a következő elemnek van-e értéke vagy sem.
  • hasPrevable (): Ez a módszer ellentétes a hasNext () -nel, és a Boolean true értéket adja vissza, ha a listának van egy előző eleme, és fordítva.
  • next (): Ez a módszer kihozza a következő elemet az adott listából.
  • previous (): Ez a módszer lekérdezi az előző elemet a listából.
  • remove (): Ez törli a jelenlegi elemet a listáról. Ha ezt a módszert a következő () vagy az előző () függvény elõtt hívják, akkor az „IllegalStateException” lesz.

Példa a ListIterator-ra

Az alábbiakban bemutatunk egy példát az ArrayList for ListIterator számára.

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

Kimenet:

Az Iteratorok előnyei a Java-ban

Az alábbiakban bemutatjuk az itatátorok előnyeit:

  1. Támogatja az összes osztályt a Gyűjtemény felület alatt.
  2. Az iterátor módszerei meglehetősen egyszerűek, könnyen érthetők és megvalósíthatók.
  3. A gyűjtemény elemei az Iteratorok segítségével könnyen módosíthatók (hozzáadhatók / eltávolíthatók).
  4. Az elemekhez való hozzáférés az Iteratorokon keresztül nem vezet kivételhez.
  5. Az adatkezelés hatékony.
  6. Egyidejűleg iterálhat különböző változókon, ha minden változó iterációs állapotát külön tartja.

Az Iteratorok korlátozásai a Java-ban

Az alábbiakban bemutatjuk az itatátorok korlátozásait:

  1. A Java iterator csak egy irányba, azaz előre irányba képes iterálni.
  2. Nem használható két különböző adatszerkezet egyidejű iterálására.
  3. Nem használható elem visszahúzására.
  4. Ez nem teszi lehetővé az iterálandó elem szerkezetének módosítását, mivel tárolja annak helyzetét.
  5. Bizonyos esetekben hatástalan lehet, ha az elemek közvetlen áthaladása sokkal hatékonyabb.

Következtetés

Az Iteratorok a leggyakrabban használt módszer az elemek begyűjtésére a gyűjtemény interfészről. Ezt Universal Java kurzornak hívják, mivel az az összes Gyűjtemény osztályra alkalmazható.

Ajánlott cikk

Ez egy útmutató az Iteratorhoz Java-ban. Itt megbeszéljük a Java alkalmazásban alkalmazott Iterator módszereit és példáit, valamint annak korlátait és előnyeit. A további javasolt cikkeken keresztül további információkat is megtudhat -

  1. Bevezetés a halomfajtához Java-ban
  2. A Java felülírása (példák)
  3. Iteratorok a C # -ben, előnyeivel és hátrányaival
  4. A 10 legnépszerűbb Java Collection interjú kérdés
  5. Dobás és dobás | Öt legfontosabb különbség, amelyet tudnia kell

Kategória: