Uvod u Iterator na Javi

Iterator je sučelje koje se koristi za dohvaćanje pojedinačnih elemenata u zbirci. Dostupan je u Java paketu koji se zove Java. util paket. API za prikupljanje provodi metodu iterator () i stoga se podaci mogu dohvatiti s sučelja kao što su Map, List, Queue, Deque i Set koja su sva implementirana iz okvira kolekcije. Kao što ime sugerira, iterator u Javi ponavlja se kroz zbirku objekata.

Sintaksa:

Iterator iterator()

Ispod iteratora je naziv objekta stvorenog pozivanjem metode iterator () sučelja za prikupljanje. "Collection" je naziv objekta kolekcije.

Iterator iter = collection.iterator();

Metode iteratora na Javi

Iteratori u Javi imaju 4 metode koje se koriste za kretanje kroz kolekcije i pronalaženje potrebnih podataka. Oni su kako slijedi:

  • hasNext (): Ovo je metoda koja vraća logičku vrijednost true ako iteracija ima sljedeći element i boolean false ako sljedeći nema elementa.
  • next (): Ova metoda vraća vrijednost elementa prisutnu u narednoj iteraciji. Pretpostavimo da nema elemenata koji se vraćaju u sljedećoj iteraciji, a zatim se baca "NoSuchElementException".
  • remove (): Ova metoda uklanja sadašnji element koji je iterator vratio iz kolekcije. U slučaju da se ova metoda zove prethodna do next () metoda, ona baca "IllegalStateException".
  • forEachRemaining (): Ova metoda izvršava operaciju na svim preostalim elementima u zbirci dok svi nisu obrađeni ili dok se ne baci iznimka. Također, ovo je metoda koju je korporacija Oracle nedavno uvela u svom izdanju Java SE 8.

Primjer Iteratora u Javi

Ispod je primjer programa Iterator na Javi:

Kodirati:

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

Izlaz:

Izuzeci bačeni metodama Iteratora

Na popisu elemenata iterator može dohvaćati informacije samo o postojećim elementima. Srušit će se ili izuzeti izuzetak ako pokuša pristupiti elementu koji nije prisutan u sljedećoj iteraciji. Ovdje ćemo upoznati različite iznimke koje dobivamo tijekom primjene iteratorskih metoda.

1. next () metoda

Sljedeća iznimka može se pojaviti tijekom iteriranja kroz skup elemenata i dohvaćanja pomoću ove metode.

  • NoSuchElementException: Do toga dolazi ako next () pokuša dohvatiti element koji ne postoji na ovom popisu. Stoga se uvijek mora koristiti hasNext () prije pozivanja next ().

2. metoda uklanjanja ()

Ovdje se mogu dogoditi dvije iznimke:

  • IllegalStateException: Ako se metoda remove () poziva prije sljedeće () metode, tada se izuzima ova iznimka. To je zato što metoda pokušava ukloniti element koji još nije naveden sljedećom () metodom i stoga ne uspijeva. Da biste riješili ovu iznimku, sljedeći () mora biti pozvan da bi se odnosio na prvu stavku, a zatim maknuti () može biti pozvan da biste isti uklonili s popisa.
  • UnsupportedOperationException: Ova se iznimka obično izbacuje prilikom pokušaja izmjene objekta popisa dodavanjem ili uklanjanjem operacije koja ne podržava modifikaciju. Na primjer, kada se niz pokušava pokušati pretvoriti u popis pomoću Arrays.asList, izuzeće je. To je zato što će objekt List imati fiksnu veličinu jer je kreiran zamotavanjem iz ArrayLista i stoga modifikacije neće biti dopuštene. Da biste riješili taj problem, pretvorite Arrays.asList u ArrayList ili LinkedList objekt prije izvođenja bilo koje radnje poput dodavanja / uklanjanja na istoj.

Sintaksa:

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

Metode ListIteratora

Ove metode omogućuju iteratoru da pređe u oba smjera objekta zbirke. Evo nekih od njih:

  • add (): Ova metoda ubacuje zadanu vrijednost objekta i vraća se kad se sljedeća () metoda poziva.
  • hasNext (): Ova metoda je ista kao ona spomenuta u vrstama iteratora koja vraća Booleovu vrijednost true / false, ovisno o tome da sljedeći element ima vrijednost ili ne.
  • hasPrevious (): Ova je metoda suprotna hasNext () i vraća Boolean true ako popis ima prethodni element i obrnuto.
  • next (): Ova metoda dohvaća sljedeći element s danog popisa.
  • previous (): Ova metoda preuzima prethodni element s popisa.
  • ukloni (): ovim se izbrisuje sadašnji element s popisa. Kada se ova metoda nazove prije sljedeće () ili prethodne () funkcije, ona baca "IllegalStateException".

Primjer za ListIterator

Ispod je primjer u ArrayListu za ListIterator.

Kodirati:

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

Izlaz:

Prednosti Iteratora u Javi

Ispod su prednosti Iteratora:

  1. Podržava sve klase u sučelju Collection.
  2. Metode iteratora prilično su jednostavne i lako razumljive i implementirane.
  3. Elementi zbirke mogu se lako izmijeniti (dodati / ukloniti) pomoću iteratora.
  4. Pristup elementima putem Iteratora neće dovesti do izuzetaka u radu.
  5. Upravljanje podacima je učinkovito.
  6. Može istovremeno ponavljati različite varijable držanjem stanja iteracije svake varijable odvojeno.

Ograničenja iteratora u Javi

Ispod su ograničenja Iteratora:

  1. Java iterator može iteratirati samo u jednom smjeru tj. Prema naprijed.
  2. Ne može se upotrijebiti za istodobno uspostavljanje dviju različitih podataka.
  3. Ne može se koristiti za vraćanje elementa.
  4. Ne dopušta iteteriziranje strukture elementa jer pohranjuje njegov položaj.
  5. U nekim je slučajevima moglo biti neefikasno, ako je prolaz kroz elemente izravno učinkovitiji.

Zaključak

Iteratori su najčešća metoda za preuzimanje elemenata iz sučelja za prikupljanje. Naziva se Universal Java Cursor jer je primjenjiv u svim klasama kolekcije.

Preporučeni članak

Ovo je vodič za Iterator na Javi. Ovdje raspravljamo o metodama i primjerima Iteratora u Javi, zajedno s njegovim Ograničenjima i prednostima. Možete i proći naše druge predložene članke da biste saznali više -

  1. Uvod u sortu heap u Java
  2. Prevladavanje u Javi (primjeri)
  3. Iteratori u C # s prednostima i nedostacima
  4. 10 najboljih pitanja o intervjuu za Java kolekciju
  5. Baciti protiv bacanja | Top 5 razlika koje biste trebali znati

Kategorija: