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:
- Támogatja az összes osztályt a Gyűjtemény felület alatt.
- Az iterátor módszerei meglehetősen egyszerűek, könnyen érthetők és megvalósíthatók.
- A gyűjtemény elemei az Iteratorok segítségével könnyen módosíthatók (hozzáadhatók / eltávolíthatók).
- Az elemekhez való hozzáférés az Iteratorokon keresztül nem vezet kivételhez.
- Az adatkezelés hatékony.
- 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:
- A Java iterator csak egy irányba, azaz előre irányba képes iterálni.
- Nem használható két különböző adatszerkezet egyidejű iterálására.
- Nem használható elem visszahúzására.
- Ez nem teszi lehetővé az iterálandó elem szerkezetének módosítását, mivel tárolja annak helyzetét.
- 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 -
- Bevezetés a halomfajtához Java-ban
- A Java felülírása (példák)
- Iteratorok a C # -ben, előnyeivel és hátrányaival
- A 10 legnépszerűbb Java Collection interjú kérdés
- Dobás és dobás | Öt legfontosabb különbség, amelyet tudnia kell