Enumeración vs iterador
Hay muchas estructuras de datos que actúan como colecciones en Java, como Vectores, Tablas hash y clases que implementan Java Collections Framework (es decir, HashMap, HashSet, ArrayList, TreeSet, TreeMap, LinkedList, LinkedHashMap y LinkedHashSet). Existen numerosas formas de recorrer los elementos individuales de los objetos en Java. Java proporciona dos interfaces para facilitar esta tarea. La enumeración y el iterador son dos de las interfaces que se encuentran en el paquete java.util que proporcionan funcionalidad para enumerar a través de secuencias u objetos con un conjunto de elementos. Enumerador se introdujo en JDK 1.0 y el iterador que se introdujo en JDK 1.2 duplica virtualmente la funcionalidad del Enumerador (dentro del Marco de Colecciones).
¿Qué es la enumeración??
La enumeración es una interfaz pública en Java, introducida en JDK 1.0, que proporciona la capacidad de enumerar a través de secuencias de elementos. Se encuentra en el paquete java.util. Cuando la interfaz de enumeración es implementada por un objeto, ese objeto puede generar una secuencia de elementos. La interfaz de enumeración tiene dos métodos. El método hasMoreElements () probará si esta enumeración contiene más elementos y nextElement () devuelve el siguiente elemento en la secuencia (si hay al menos uno más por delante). En otras palabras, al llamar a nextElement () sucesivamente, el programador puede acceder a los elementos individuales de la serie. Por ejemplo, para imprimir todos los elementos en Vector v1 usando Enumerator, se puede usar el siguiente fragmento de código.
Enumeración e = v1.elementos ();
While (e.hasMoreLements ())
System.out.println (e.nextElement ());
El enumerador también se puede usar para definir el flujo de entrada a los objetos SequenceInputStream.
Que es iterador?
Iterator es una interfaz pública en el paquete Java.util, que permite iterar a través de elementos de los objetos de colecciones que implementan el marco de Colecciones (como ArrayList, LinkedList, etc.). Esto se introdujo en JDK 1.2 y reemplazó el Enumerator dentro del Java Collections Framework. Iterador tiene tres métodos. El método hasNext () comprueba si hay elementos restantes en la colección y el método next () devuelve el siguiente elemento de la serie. El método remove () se puede usar para eliminar el elemento actual de la colección subyacente. Por ejemplo, para imprimir todos los elementos en Vector v1 usando Iterator, se puede usar el siguiente fragmento de código.
Iterador i = v1.elementos ();
While (i.hasNext ())
System.out.println (e.next ());
¿Cuál es la diferencia entre enumeración e iterador??
Aunque Enumeration y Iterator son dos de las interfaces que se encuentran en el paquete java.util, que permiten iterar / enumerar a través de elementos de una serie, tienen sus diferencias. En realidad, Iterator, que se introdujo después de Enumeration, reemplaza a Enumeration dentro del marco de Java Collections. A diferencia de la enumeración, Iterator es a prueba de fallas. Esto significa que las modificaciones simultáneas (a la colección subyacente) no están permitidas cuando se utiliza Iterator. Esto es muy útil en entornos de subprocesos múltiples donde siempre hay un riesgo de modificaciones concurrentes. En el caso de una modificación concurrente, el objeto Iterator emitirá una excepción ConcurrentModificationException. Iterator tiene nombres de métodos más cortos en comparación con Enumerator. Además, iterador tiene la funcionalidad adicional de eliminar elementos durante la iteración (que no es posible utilizando Enumerador). Por lo tanto, si existe la necesidad de eliminar elementos de la colección, Iterator es la única opción que puede considerarse.