Introduction à Iterator en Java

Un itérateur est une interface utilisée pour récupérer les éléments un par un dans une collection. Il est disponible dans un package Java appelé Java. paquet d'utilisation. L'API de collecte implémente la méthode iterator () et, par conséquent, les données peuvent être récupérées à partir d'interfaces telles que Map, List, Queue, Deque et Set, qui sont toutes implémentées à partir du cadre de collecte. Comme son nom l'indique, un itérateur en Java parcourt une collection d'objets.

Syntaxe:

Iterator iterator()

Sous l'itérateur se trouve le nom d'un objet créé en appelant la méthode iterator () de l'interface de collection. «Collection» est le nom de l'objet de collection.

Iterator iter = collection.iterator();

Méthodes d'itérateur en Java

Les itérateurs ont 4 méthodes en Java qui sont utilisées pour parcourir les collections et récupérer les informations requises. Ils sont les suivants:

  • hasNext (): Il s'agit d'une méthode qui renvoie booléen true si l'itération a un élément suivant présent et booléen false s'il n'y a aucun élément présent ensuite.
  • next (): Cette méthode renvoie la valeur de l'élément présente dans l'itération à venir. Supposons qu'il n'y ait aucun élément à renvoyer dans l'itération suivante, alors une «NoSuchElementException» est levée.
  • remove (): Cette méthode supprime l'élément actuel renvoyé par l'itérateur de la collection. Dans le cas où cette méthode est appelée avant la méthode next (), elle lève «IllegalStateException».
  • forEachRemaining (): cette méthode exécute l'opération sur tous les éléments restants de la collection jusqu'à ce que tous aient été traités ou jusqu'à ce qu'une exception soit levée. Il s'agit également d'une méthode récemment introduite par Oracle Corporation dans sa version Java SE 8.

Exemple d'itérateur en Java

Voici l'exemple d'Iterator en Java:

Code:

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

Production:

Exceptions levées par les méthodes d'itérateur

Dans une liste d'éléments, un itérateur peut extraire des informations uniquement sur les éléments existants. Il plantera ou lèvera une exception s'il tente d'accéder à un élément qui n'est pas présent dans l'itération suivante. Ici, nous allons découvrir les différents types d'exceptions que nous obtenons lors de la mise en œuvre des méthodes d'itérateur.

1. méthode next ()

Lors de l'itération d'un ensemble d'éléments et de leur récupération par cette méthode, l'exception suivante peut se produire.

  • NoSuchElementException: cela se produit si next () tente de récupérer un élément qui n'existe pas dans la liste actuelle. Par conséquent, toujours un hasNext () doit être utilisé avant d'appeler next ().

2. méthode remove ()

Il existe 2 types d'exceptions qui peuvent se produire ici:

  • IllegalStateException: si la méthode remove () est appelée avant la méthode next (), cette exception est levée. En effet, la méthode tente de supprimer un élément qui n'est pas encore spécifié par la méthode next () et échoue donc. Pour résoudre cette exception, next () doit être appelé pour faire référence au premier élément, puis remove () peut être appelé pour supprimer le même élément de la liste.
  • UnsupportedOperationException: cette exception est généralement levée lorsque vous essayez de modifier un objet liste en ajoutant ou supprimant une opération qui ne prend pas en charge la modification. Par exemple, lorsqu'un tableau tente de se convertir en liste par Arrays.asList lève cette exception. Cela est dû au fait que l'objet List aura une taille fixe car il est créé par l'encapsuleur à partir de ArrayList et donc la modification ne sera pas autorisée. Pour résoudre ce problème, convertissez l'objet Arrays.asList en objet ArrayList ou LinkedList avant d'effectuer des opérations telles que l'ajout / la suppression sur le même.

Syntaxe:

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

Méthodes de ListIterator

Ces méthodes permettent à l'itérateur de parcourir les deux directions de l'objet de collection. Voici certains d'entre eux:

  • add (): cette méthode insère la valeur d'objet donnée et est renvoyée lorsque la méthode next () est appelée.
  • hasNext (): Cette méthode est la même que celle mentionnée dans les types d'itérateurs qui retourne booléen true / false selon que l'élément suivant a une valeur ou non.
  • hasPrevious (): Cette méthode est opposée à hasNext () et renvoie Boolean true si la liste a un élément précédent et vice versa.
  • next (): Cette méthode récupère l'élément suivant de la liste donnée.
  • previous (): Cette méthode récupère l'élément précédent de la liste.
  • remove (): Ceci supprime l'élément actuel de la liste. Lorsque cette méthode est appelée avant la fonction next () ou previous (), elle lève «IllegalStateException».

Exemple pour ListIterator

Voici un exemple dans ArrayList pour ListIterator.

Code:

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

Production:

Avantages des itérateurs en Java

Voici les avantages des itérateurs:

  1. Il prend en charge toutes les classes sous l'interface Collection.
  2. Les méthodes d'un itérateur sont assez simples et faciles à comprendre et à mettre en œuvre.
  3. Les éléments d'une collection peuvent être facilement modifiés (ajout / suppression) à l'aide d'itérateurs.
  4. L'accès aux éléments via les itérateurs ne conduira pas à des exceptions d'exécution.
  5. Le traitement des données est efficace.
  6. Il peut parcourir plusieurs variables simultanément en maintenant séparément l'état d'itération de chaque variable.

Limitations des itérateurs en Java

Voici les limites des itérateurs:

  1. L'itérateur Java ne peut itérer que dans une direction, c'est-à-dire vers l'avant.
  2. Il ne peut pas être utilisé pour parcourir simultanément deux structures de données différentes.
  3. Il ne peut pas être utilisé pour retracer un élément.
  4. Il ne permet pas de modifier la structure de l'élément en cours d'itération car il stocke sa position.
  5. Peut être inefficace dans certains cas, la traversée directe des éléments est plus efficace.

Conclusion

Les itérateurs sont la méthode la plus couramment utilisée pour récupérer des éléments de l'interface de collecte. Il est appelé Universal Java Cursor car il s'applique à toutes les classes Collection.

Article recommandé

Ceci est un guide pour Iterator en Java. Ici, nous discutons des méthodes et des exemples d'itérateur en Java ainsi que ses limites et avantages. Vous pouvez également consulter nos autres articles suggérés pour en savoir plus -

  1. Introduction au tri en tas en Java
  2. Remplacement en Java (exemples)
  3. Itérateurs en C # avec avantages et inconvénients
  4. Questions d'entretiens chez Top 10 Java Collection
  5. Lancer vs lancer | Les 5 principales différences que vous devez savoir