Por qué utilizar un iterador en Java en lugar de una lista o un array

Un java.util.Iterator es preferible a un java.util.List o a un arreglo como valor de retorno en muchos casos, ya que un iterador puede ser devuelto antes de que el conjunto completo de datos esté disponible desde una fuente. Por ejemplo, supongamos que tenemos un proceso de servidor cuya tarea es enviar una serie de objetos desde una fuente hasta un destino. Usar un método getter que devuelva un iterador permite que el código de envío comience a enviar la serie al destino final mientras los datos aún están siendo recibidos. En cambio, si usamos un método getter que devuelva un arreglo o una lista, el código de envío no puede comenzar a enviar hasta que la serie completa haya sido recibida para poblar el arreglo o lista.


Más sobre los Iteradores en Java

Las clases java.util.Iterator y java.util.List esencialmente hacen lo mismo: te dan acceso a una secuencia de objetos. Pero una diferencia clave le da una ventaja a los iteradores en ciertas situaciones. Lee más sobre los iteradores y las listas.


Devolver un iterador que todavía se está llenando te ahorra tener que esperar a que la fuente produzca todos los datos antes de devolver una referencia a la serie. Sin embargo, puedes reducir aún más los costos. Si la fuente puede producir objetos más rápido de lo que el consumidor del iterador puede tomarlos, la fuente podría quedarse esperando a que el consumidor del iterador llame a next() para que pueda preparar otro objeto para enviar. Así como un BufferedInputStream ayuda a aliviar el retraso del remitente al tratar con flujos, un BufferedIterator puede eliminar cuellos de botella similares en una serie de iteradores.

Presento a continuación el código fuente de un BufferedIterator (Listado A). Como probablemente habrás adivinado, el BufferedIterator lee de la fuente más rápido de lo que se consumen los datos y almacena en búfer lo que aún no ha sido leído. Normalmente, el código de esta complejidad tendría muchos comentarios, pero los he dejado fuera para no saturar el listado del código fuente.

Como el BufferedIterator es un iterador, implementa la interfaz java.util.Iterator y cumple con los contratos establecidos en la documentación de esa clase. Lo siguiente que notas es que tiene dos constructores: uno toma un iterador simple, y el otro toma el mismo más un parámetro adicional de tipo int. Usar esta clase es tan fácil como usar un BufferedInputStream. Simplemente pasa el iterador fuente como el primer parámetro del constructor de BufferedIterator y usa el BufferedIterator donde usarías el iterador fuente.

13 reglas de diseño web para construir sitios efectivos

Disponible en la seccion de colaboradores

En Newsmatic nos especializamos en tecnología de vanguardia, contamos con los artículos mas novedosos sobre Desarrollo, allí encontraras muchos artículos similares a Por qué utilizar un iterador en Java en lugar de una lista o un array , tenemos lo ultimo en tecnología 2023.

Artículos Relacionados

Subir

Utilizamos cookies para mejorar su experiencia de navegación, mostrarle anuncios o contenidos personalizados y analizar nuestro tráfico. Al hacer clic en “Aceptar todo” usted da su consentimiento a nuestro uso de las cookies.