logo

Iterator u Javi

U Javi, an Iterator je jedan od Java kursora. Java iterator je sučelje koje se prakticira kako bi se jedna po jedna iterirala preko kolekcije komponenti Java objekta. Besplatan je za korištenje u Java programskom jeziku od okvira Java 1.2 Collection. Pripada paketu java.util.

Iako je Java Iterator predstavljen u Javi 1.2, on još uvijek nije najstariji alat dostupan za prolazak kroz elemente objekta zbirke. Najstariji Iterator u programskom jeziku Java je Iterator koji prethodi Enumeratoru. Java Iterator sučelje nasljeđuje iterator enumerator koji se prakticirao na početku za prelazak preko nekih dostupnih kolekcija kao što su ArrayLists.

Java Iterator također je poznat kao univerzalni kursor Jave jer je prikladan za sve klase okvira zbirke. Java Iterator također pomaže u operacijama kao što su READ i REMOVE. Kada usporedimo Java Iterator sučelje sa sučeljem enumeratorskog iteratora, možemo reći da su nazivi metoda dostupnih u Java Iteratoru precizniji i jednostavniji za korištenje.

Prednosti Java Iteratora

Iterator je u Javi postao vrlo raširen zbog svojih brojnih prednosti. Prednosti Java Iteratora navedene su kako slijedi -

  • Korisnik može primijeniti ove iteratore na bilo koju klasu okvira zbirke.
  • U Java Iteratoru možemo koristiti obje operacije čitanja i uklanjanja.
  • Ako korisnik radi s for petljom, ne može modernizirati (dodati/ukloniti) zbirku, dok, ako koristi Java Iterator, može jednostavno ažurirati zbirku.
  • Java iterator se smatra univerzalnim kursorom za API zbirke.
  • Imena metoda u Java Iteratoru su vrlo laka i vrlo jednostavna za korištenje.

Nedostaci Java Iteratora

Unatoč brojnim prednostima, Java Iterator ima i brojne nedostatke. Nedostaci Java Iteratora navedeni su u nastavku -

  • Java Iterator čuva iteraciju samo u smjeru naprijed. Jednostavnim riječima, Java Iterator je jednosmjerni Iterator.
  • Java Iterator ne odobrava zamjenu i proširenje nove komponente.
  • U CRUD operacijama, Java iterator ne drži razne operacije poput CREATE i UPDATE.
  • U usporedbi s Spliteratorom, Java Iterator ne podržava prelaženje elemenata u paralelnom uzorku što implicira da Java Iterator podržava samo sekvencijalno ponavljanje.
  • U usporedbi s Spliteratorom, Java Iterator ne podržava pouzdanije izvršenje za prelazak velike količine podataka.

Kako koristiti Java Iterator?

Kada korisnik treba koristiti Java Iterator, obavezno je napraviti instancu Iterator sučelja iz kolekcije objekata preko kojih žele prijeći. Nakon toga, primljeni iterator održava trag komponenti u temeljnoj kolekciji kako bi se osiguralo da će korisnik prijeći preko svakog od elemenata kolekcije objekata.

Ako korisnik modificira temeljnu zbirku dok prelazi preko iteratora koji vodi do te zbirke, tada će iterator to obično potvrditi i izbacit će iznimku sljedeći put kada korisnik pokuša dobiti sljedeću komponentu iz iteratora.

Metode Java iteratora

Sljedeća slika savršeno prikazuje dijagram klasa Java Iterator sučelja. Sadrži ukupno četiri metode koje su:

  • hasNext()
  • Sljedeći()
  • ukloniti()
  • zaSvakiPreostali()

The zaSvakiPreostali() metoda je dodana u Javi 8. Raspravljajmo o svakoj metodi detaljno.

    booleov hasNext(): Metoda ne prihvaća nijedan parametar. Vraća true ako je ostalo više elemenata u iteraciji. Ako nema više preostalih elemenata, vratit će false.
    Ako nema više preostalih elemenata u iteraciji, tada nema potrebe pozivati ​​next() metodu. Jednostavnim riječima, možemo reći da se metoda koristi za određivanje hoće li se next() metoda pozvati ili ne.E sljedeći():Slično je hasNext() metodi. Također ne prihvaća nijedan parametar. Vraća E, tj. sljedeći element u obilasku. Ako iteracija ili kolekcija objekata nema više preostalih elemenata za iteraciju, tada izbacuje NoSuchElementException.default void remove():Ova metoda također ne zahtijeva nikakve parametre. Ne postoji povratna vrsta ove metode. Glavna funkcija ove metode je uklanjanje posljednjeg elementa koji vraća iterator prolazeći kroz temeljnu zbirku. Metoda remove () može se zatražiti jedva jednom za sljedeći () poziv metode. Ako iterator ne podržava operaciju uklanjanja, tada izbacuje UnSupportedOperationException. Također izbacuje IllegalStateException ako sljedeća metoda još nije pozvana.default void forEachRemaining(akcija potrošača):To je jedina metoda Java Iteratora koja uzima parametar. Prihvaća akciju kao parametar. Radnja nije ništa drugo nego ono što treba izvesti. Ne postoji povratna vrsta metode. Ova metoda izvodi specifičnu operaciju na svim lijevim komponentama zbirke dok se sve komponente ne potroše ili radnja ne izbaci iznimku. Iznimke izbačene radnjom dostavljaju se pozivatelju. Ako je radnja null, tada izbacuje NullPointerException.

Primjer Java Iteratora

Sada je vrijeme za izvršavanje Java programa kako bi se ilustrirala prednost Java Iterator sučelja. Donji kod stvara ArrayList imena gradova. Zatim inicijaliziramo iterator primjenom metode iterator () ArrayList-a. Nakon toga, popis se prelazi kako bi se predstavio svaki element.

JavaIteratorExample.java

 import java.io.*; import java.util.*; public class JavaIteratorExample { public static void main(String[] args) { ArrayList cityNames = new ArrayList(); cityNames.add('Delhi'); cityNames.add('Mumbai'); cityNames.add('Kolkata'); cityNames.add('Chandigarh'); cityNames.add('Noida'); // Iterator to iterate the cityNames Iterator iterator = cityNames.iterator(); System.out.println('CityNames elements : '); while (iterator.hasNext()) System.out.print(iterator.next() + ' '); System.out.println(); } } 

Izlaz:

 CityNames elements: Delhi Mumbai Kolkata Chandigarh Noida 

Bodovi za pamćenje

  • Java Iterator je sučelje dodano u programskom jeziku Java u sklopu Java 1.2 Collection. Pripada paketu java.util.
  • To je jedan od Java pokazivača koji se prakticiraju za kretanje kroz objekte okvira zbirke.
  • Java Iterator koristi se za ponavljanje komponenti objekta zbirke jednu po jednu.
  • Java Iterator također je poznat kao univerzalni kursor Jave jer je prikladan za sve klase okvira zbirke.
  • Java Iterator također podržava operacije kao što su READ i REMOVE.
  • Nazivi metoda klase Iterator vrlo su jednostavni i laki za korištenje u usporedbi s nazivima metoda Enumeration Iterator.