Java sissejuhatuse iteraatori sissejuhatus

Iterator on liides, mida kasutatakse elementide ükshaaval toomiseks kollektsioonis. See on saadaval Java-paketis nimega Java. util pakett. Kogumise API rakendab iteraatori () meetodit ja seetõttu saab andmeid hankida liidestest nagu kaart, loend, järjekord, deque ja komplekt, mis kõik on rakendatud kogumisraamistikust. Nagu nimest järeldada võib, itareerib Java iteraator läbi objektide kogumi.

Süntaks:

Iterator iterator()

Iteraatori all on objekti nimi, mis on loodud iteraatori () kogumismeetodi liidese kutsumisega. Kollektsioon on kollektsiooni objekti nimi.

Iterator iter = collection.iterator();

Iteraatori meetodid Java-s

Iteraatoritel on Java-s 4 meetodit, mida kasutatakse kogude läbimiseks ja vajaliku teabe hankimiseks. Need on järgmised:

  • hasNext (): See on meetod, mis tagastab tõeväärtuse true, kui iteratsioonil on järgmine element olemas, ja boolean false, kui järgmisel pole ühtegi elementi.
  • järgmine (): See meetod tagastab tulevas iteratsioonis esineva elemendi väärtuse. Oletame, et järgmises iteratsioonis pole ühtegi tagastatavat elementi, siis visatakse “NoSuchElementException”.
  • eemalda (): See meetod eemaldab iteraatori tagastatud elemendi kollektsioonist. Kui seda meetodit nimetatakse järgmisele () eelmisele, viskab see välja "IllegalStateException".
  • forEachRemaining (): See meetod täidab operatsiooni kogu ülejäänud elementidega kollektsioonis seni, kuni kõiki neid on töödeldud või kuni erand on välja visatud. Samuti on see meetod, mille Oracle Corporation tutvustas oma Java SE 8 väljaandes äsja.

Iteraatori näide Java-s

Allpool on Java Java-kuvamise näide:

Kood:

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äljund:

Iteraatormeetodite põhjustatud erandid

Elementide loendis saab iteraator tuua teavet ainult olemasolevate elementide kohta. See krahhib või loobub erandist, kui proovitakse juurde pääseda elemendile, mida järgmisel iteratsioonil pole. Siin tutvume erinevate eranditega, mida iteraatori meetodite rakendamisel saame.

1. järgmine () meetod

Elementide komplekti kaudu itereerides ja neid selle meetodiga tõmmates võib ilmneda järgmine erand.

  • NoSuchElementException: See juhtub siis, kui järgmine () proovib hankida elementi, mida praeguses loendis pole. Seega tuleb enne järgmisele () helistamist alati kasutada hasNext ().

2. eemalda () meetod

Siin võib esineda 2 tüüpi erandeid:

  • IllegalStateException: kui meetodit remove () kutsutakse enne järgmist () meetodit, siis see erand visatakse välja. Selle põhjuseks on asjaolu, et meetod üritab eemaldada elemendi, mida järgmine () meetod ei ole veel määranud ja seega ebaõnnestub. Selle erandi lahendamiseks tuleb järgmisele üksusele helistada, et viidata esimesele üksusele ja seejärel kutsuda eemaldamisseade (), et eemaldada see loendist.
  • UnsupportedOperationException: See erand visatakse tavaliselt siis, kui proovitakse muuta loendiobjekti, lisades või eemaldades toimingu, mis ei toeta modifitseerimist. Näiteks kui Arrays.asList proovib massiivi teisendada loendiks, loobub see erand. Selle põhjuseks on asjaolu, et loendiobjektil on kindel suurus, kuna selle on loonud ArrayList ümbris ja seetõttu pole selle muutmine lubatud. Selle probleemi lahendamiseks teisendage Arrays.asList objektiks ArrayList või LinkedList ja tehke enne mis tahes toiminguid, näiteks lisage / eemaldage.

Süntaks:

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

ListIteraatori meetodid

Need meetodid võimaldavad iteraatoril liikuda kollektsiooniobjekti mõlemas suunas. Allpool on mõned neist:

  • add (): See meetod lisab antud objekti väärtuse ja tagastatakse järgmise () meetodi kutsumisel.
  • hasNext (): See meetod on sama, mida mainiti iteraatoritüüpides, mis tagastab Boolean true / false olenevalt järgmisest elemendist, millel on väärtus või mitte.
  • hasPrevable (): See meetod on vastupidine hasNext () ja tagastab tõeväärtuse true, kui loendis on eelnev element, ja vastupidi.
  • järgmine (): See meetod hangib antud loendist järgmise elemendi.
  • previous (): See meetod hangib eelneva elemendi loendist.
  • eemalda (): Kustutab praeguse elemendi loendist. Kui seda meetodit kutsutakse kas enne järgmist () või eelmist () funktsiooni, kuvatakse see “IllegalStateException”.

Näide ListIteraatori kohta

Allpool on näide ArrayListist ListIteratori jaoks.

Kood:

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äljund:

Iteraatorite eelised Java-s

Allpool on iteraatorite eelised:

  1. See toetab kõiki kogumiliidese all olevaid klasse.
  2. Iteraatori meetodid on üsna lihtsad ja hõlpsasti mõistetavad ning rakendatavad.
  3. Kollektsiooni elemente saab hõlpsalt muuta (lisada / eemaldada), kasutades selleks Iteraatoreid.
  4. Elementide juurde pääsemine Iteraatorite kaudu ei põhjusta tööaja erandite tegemist.
  5. Andmete käsitlemine on tõhus.
  6. See saab samaaegselt itereerida erinevate muutujate üle, hoides iga muutuja iteratsiooni olekut eraldi.

Iteraatorite piirangud Java-s

Allpool on iteraatorite piirangud:

  1. Java iteraator saab iteratsiooni ainult ühes suunas, st edasi-tagasi.
  2. Seda ei saa kasutada kahe erineva andmestruktuuri samaaegseks iteratsiooniks.
  3. Seda ei saa kasutada elemendi tagasiulatuks.
  4. See ei võimalda korratava elemendi struktuuri muuta, kuna see salvestab selle positsiooni.
  5. Võib-olla võib mõnel juhul olla ebaefektiivne, kui elementide otse läbimine on tõhusam.

Järeldus

Iteraatorid on kõige sagedamini kasutatav meetod elementide kogumisliidesest toomiseks. Seda nimetatakse universaalseks Java-kursoriks, kuna see on rakendatav kõigis kollektsiooniklassides.

Soovitatav artikkel

See on Java Iteratori juhend. Siin käsitleme Java-meetodi meetodeid ja näiteid ning selle piiranguid ja eeliseid. Lisateavet leiate ka meie muudest soovitatud artiklitest -

  1. Sissejuhatus Java-s hunnikute sorteerimisse
  2. Ülekaal Java-s (näited)
  3. C # iteraatorid eeliste ja puudustega
  4. 10 parimat Java Collectioni intervjuu küsimust
  5. Viska vs viskab | 5 parimat erinevust, mida peaksite teadma

Kategooria: