Différence Entre L'énumération Et L'itérateur

Différence Entre L'énumération Et L'itérateur
Différence Entre L'énumération Et L'itérateur

Vidéo: Différence Entre L'énumération Et L'itérateur

Vidéo: Différence Entre L'énumération Et L'itérateur
Vidéo: Comment distinguer une gradation d'une énumération ? 2024, Novembre
Anonim

Énumération vs itérateur

Il existe de nombreuses structures de données qui agissent comme des collections en Java, telles que les vecteurs, les tables de hachage et les classes qui implémentent Java Collections Framework (c'est-à-dire HashMap, HashSet, ArrayList, TreeSet, TreeMap, LinkedList, LinkedHashMap et LinkedHashSet). Il existe de nombreuses façons de parcourir les éléments individuels des objets en Java. Java fournit deux interfaces pour faciliter cette tâche. L'énumération et l'itérateur sont deux des interfaces trouvées dans le package java.util qui fournissent des fonctionnalités pour énumérer via des séquences ou des objets avec un ensemble d'éléments. Enumerator a été introduit dans JDK 1.0 et Iterator qui a été introduit dans JDK 1.2 duplique virtuellement la fonctionnalité de Enumerator (dans le cadre de collections).

Qu'est-ce que l'énumération?

L'énumération est une interface publique en Java, introduite dans JDK 1.0, qui offre la possibilité d'énumérer à travers des séquences d'éléments. Il se trouve sous le package java.util. Lorsque l'interface Enumeration est implémentée par un objet, cet objet peut générer une séquence d'éléments. L'interface d'énumération a deux méthodes. La méthode hasMoreElements () testera si cette énumération contient plus d'éléments et nextElement () renvoie l'élément suivant dans la séquence (s'il en reste au moins un). En d'autres termes, en appelant successivement nextElement (), le programmeur peut accéder aux éléments individuels de la série. Par exemple, pour imprimer tous les éléments de Vector v1 à l'aide de Enumerator, l'extrait de code suivant peut être utilisé.

Énumération e = v1.elements ();

Alors que (e.hasMoreLements ()) {

System.out.println (e.nextElement ());

}

Enumerator peut également être utilisé pour définir le flux d'entrée vers les objets SequenceInputStream.

Qu'est-ce qu'Iterator?

Iterator est une interface publique dans le package Java.util, qui permet d'itérer à travers des éléments des objets de collections qui implémentent le framework Collections (tels que ArrayList, LinkedList, etc.). Cela a été introduit dans JDK 1.2 et a remplacé l'énumérateur dans le Java Collections Framework. Iterator a trois méthodes. La méthode hasNext () teste s'il reste des éléments dans la collection et la méthode next () retourne l'élément suivant de la série. La méthode remove () peut être utilisée pour supprimer l'élément actuel de la collection sous-jacente. Par exemple, pour imprimer tous les éléments de Vector v1 à l'aide d'Iterator, l'extrait de code suivant peut être utilisé.

Itérateur i = v1.elements ();

Alors que (i.hasNext ()) {

System.out.println (e.next ());

}

Quelle est la différence entre Enumeration et Iterator?

Bien que Enumeration et Iterator soient deux des interfaces trouvées dans le package java.util, qui permettent d'itérer / énumérer des éléments d'une série, ils ont leurs différences. En fait, Iterator, qui a été introduit après l'énumération, remplace l'énumération dans le cadre des collections Java. Contrairement à Enumeration, Iterator est à sécurité intégrée. Cela signifie que les modifications simultanées (apportées à la collection sous-jacente) ne sont pas autorisées lorsque Iterator est utilisé. Ceci est très utile dans les environnements multi-threads où il y a toujours un risque de modifications simultanées. En cas de modification simultanée, l'objet Iterator lèvera une ConcurrentModificationException. Iterator a des noms de méthode plus courts que Enumerator. En outre,iterator a la fonctionnalité supplémentaire de supprimer des éléments pendant l'itération (ce qui n'est pas possible avec Enumerator). Ainsi, s'il est nécessaire de supprimer des éléments de la collection, Iterator est la seule option envisageable.

Recommandé: