Introducere în Iterator în Java

Un Iterator este o interfață care este utilizată pentru a obține elemente unul câte unul într-o colecție. Este disponibil în pachetul Java numit Java. pachet util API-ul de colecție implementează metoda iterator () și, prin urmare, datele pot fi preluate din interfețe precum Map, List, Queue, Deque și Set, care sunt toate implementate din cadrul colectării. După cum sugerează și numele, un iterator din Java iterează printr-o colecție de obiecte.

Sintaxă:

Iterator iterator()

Sub iterator se află numele unui obiect creat prin apelarea metodei iterator () a interfeței de colectare. „Colecție” este numele obiectului de colecție.

Iterator iter = collection.iterator();

Metode de Iterator în Java

Iteratorii au 4 metode în Java care sunt folosite pentru a traversa colecțiile și pentru a prelua informațiile necesare. Acestea sunt următoarele:

  • hasNext (): Aceasta este o metodă care returnează booleanul adevărat dacă iterația are un element următor prezent și fals boolean dacă nu există un element prezent în continuare.
  • următorul (): Această metodă returnează valoarea elementului prezentă în iterația următoare. Să presupunem că nu există elemente care trebuie returnate în următoarea iterație, atunci este aruncat un „NoSuchElementException”.
  • remove (): Aceasta metoda elimina din colectie elementul prezent returnat de iterator. În cazul în care această metodă este numită anterioară metoda următoare (), aceasta aruncă „IllegalStateException”.
  • forEachRemaining (): această metodă execută operația pe toate elementele rămase din colecție până când toate au fost procesate sau până când o excepție este aruncată. De asemenea, aceasta este o metodă recent introdusă de Oracle Corporation în versiunea lor Java SE 8.

Exemplu de Iterator în Java

Mai jos este exemplul de Iterator în Java:

Cod:

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

ieşire:

Excepții aruncate de Iterator Methods

Într-o listă de elemente, un iterator poate prelua informații doar cu privire la elementele existente. Se va bloca sau arunca o excepție dacă se încearcă accesarea unui element care nu este prezent în următoarea iterație. Aici vom cunoaște diferitele tipuri de excepții pe care le primim în timpul implementării metodelor de iterator.

1. metoda următoare ()

În timp ce se iterează printr-un set de elemente și se prelevează prin această metodă, poate apărea următoarea excepție.

  • NoSuchElementException: Aceasta se întâmplă dacă următorul () încearcă să recupereze un element care nu există în lista actuală. Prin urmare, trebuie folosit întotdeauna un hasNext () înainte de a apela la următorul ().

2. a elimina () metoda

Există 2 tipuri de excepții care pot apărea aici:

  • IllegalStateException: Dacă metoda remove () este apelată înaintea următoarei metode (), atunci această excepție este aruncată. Acest lucru se datorează faptului că metoda încearcă să elimine un element care nu este încă specificat de următoarea () metodă și, prin urmare, nu reușește. Pentru a rezolva această excepție, următorul () trebuie să fie chemat pentru a face referire la primul articol și apoi poate fi chemat să elimine () pentru a elimina același din listă.
  • UnsupportedOperationException: Această excepție este de obicei aruncată atunci când se încearcă modificarea unui obiect de listă prin adăugarea sau eliminarea operației care nu acceptă modificarea. De exemplu, atunci când Arrays.asList aruncă această excepție, când un tabel este încercat să se transforme într-o listă. Acest lucru se datorează faptului că obiectul List va avea o dimensiune fixă, deoarece este creat de wrapper de la ArrayList și, prin urmare, modificarea nu va fi permisă. Pentru a rezolva această problemă, convertiți obiectul Arrays.asList în ArrayList sau LinkedList înainte de a efectua operațiuni cum ar fi adăugare / eliminare pe același.

Sintaxă:

//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 de ListIterator

Aceste metode permit iteratorului să traverseze ambele direcții ale obiectului de colectare. Urmează câteva dintre ele:

  • add (): Această metodă introduce valoarea obiectului dată și este returnată atunci când este apelată următoarea () metodă.
  • hasNext (): Această metodă este aceeași cu cea menționată în tipurile de iterator care returnează Boolean adevărat / fals în funcție de următorul element care are o valoare sau nu.
  • hasPrevious (): Această metodă este opusă hasNext () și returnează Boolean true dacă lista are un element anterior și invers.
  • next (): Această metodă preia următorul element din lista dată.
  • precedent (): Această metodă preia elementul anterior din listă.
  • remove (): Aceasta elimină elementul prezent din listă. Când această metodă este numită fie înainte de următoarea () sau funcția anterioară (), aceasta aruncă „IllegalStateException”.

Exemplu pentru ListIterator

Mai jos este prezentat un exemplu în ArrayList pentru ListIterator.

Cod:

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

ieşire:

Avantajele Ieratorilor în Java

Mai jos sunt avantajele Iteratorilor:

  1. Acceptă toate clasele din interfața Colecție.
  2. Metodele unui iterator sunt destul de simple și ușor de înțeles și de implementat.
  3. Elementele unei colecții pot fi ușor modificate (adăugate / înlăturate) folosind Iteratori.
  4. Accesarea elementelor prin Iteratori nu va conduce la excepții în timp de rulare.
  5. Tratarea datelor este eficientă.
  6. Se poate itera asupra diferitelor variabile concomitent prin menținerea separată a stării de iterare a fiecărei variabile.

Limitările Iteratorilor în Java

Mai jos sunt limitările Iteratorilor:

  1. Ieratorul Java poate itera doar într-o direcție, adică direcție înainte.
  2. Nu poate fi utilizat pentru a itera între două structuri de date diferite concomitent.
  3. Acesta nu poate fi utilizat pentru a trasa înapoi un element.
  4. Nu permite modificarea structurii elementului care este iterat, deoarece stochează poziția acestuia.
  5. Poate fi ineficient în anumite cazuri, traversarea elementelor este mai eficientă.

Concluzie

Iteratorii sunt metoda cea mai frecvent utilizată pentru preluarea elementelor din interfața de colectare. Se numește cursor Java universal, deoarece este aplicabil la toate clasele de colecție.

Articol recomandat

Acesta este un ghid pentru Iterator în Java. Aici discutăm metode și exemple de Iterator în Java împreună cu limitările și avantajele sale. Puteți parcurge și alte articole sugerate pentru a afla mai multe -

  1. Introducere la sortarea haldei în Java
  2. Suprasolicitare în Java (exemple)
  3. Iteratori în C # cu avantaje și dezavantaje
  4. Top 10 întrebări de interviu pentru colecția Java
  5. Aruncă vs Aruncă | Top 5 diferențe pe care ar trebui să le știi