Enumeración vs iterador
Hay muchas estructuras de datos que actúan como colecciones en Java, como vectores, tablas Hash y clases que implementan el marco de colecciones Java (es decir, HashMap, HashSet, ArrayList, TreeSet, TreeMap, LinkedList, LinkedHashMap y LinkedHashSet). Existen numerosas formas de iterar a través de 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 brindan funcionalidad para enumerar secuencias u objetos con un conjunto de elementos. Enumerator se introdujo en JDK 1.0 y Iterator, que se introdujo en JDK 1.2, prácticamente duplica la funcionalidad del Enumerator (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 completar). En otras palabras, llamando 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.elements ();
Mientras (e.hasMoreLements ()) {
System.out.println (e.nextElement ());
}
Enumerator también se puede utilizar para definir el flujo de entrada a los objetos SequenceInputStream.
¿Qué es Iterator?
Iterator es una interfaz pública en el paquete Java.util, que permite iterar a través de elementos de los objetos de las colecciones que implementan el marco de las colecciones (como ArrayList, LinkedList, etc.). Esto se introdujo en JDK 1.2 y reemplazó al Enumerator dentro de Java Collections Framework. El iterador tiene tres métodos. El método hasNext () prueba si quedan elementos en la colección y el método next () devuelve el siguiente elemento de la serie. El método remove () se puede utilizar 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.elements ();
Mientras (i.hasNext ()) {
System.out.println (e.next ());
}
¿Cuál es la diferencia entre enumeración e iterador?
Aunque Enumeration e 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 Enumeration, Iterator es a prueba de fallos. Esto significa que no se permiten modificaciones simultáneas (a la colección subyacente) cuando se usa Iterator. Esto es muy útil en entornos de subprocesos múltiples donde siempre existe el riesgo de modificaciones simultáneas. En el caso de una modificación concurrente, el objeto Iterator lanzará una ConcurrentModificationException. Iterator tiene nombres de método más cortos en comparación con Enumerator. Además,iterator tiene la funcionalidad adicional de eliminar elementos durante la iteración (lo cual no es posible usando Enumerator). Entonces, si es necesario eliminar elementos de la colección, Iterator es la única opción que se puede considerar.