En Java, ¿hay alguna diferencia entre Iterator e Iterable?


Respuesta 1:

Los nombres de las interfaces se ajustan perfectamente, deberían darle una pista, si no la respuesta directa ya. Una clase que implementa la interfaz Iterable es - ITERABLE.

Por lo tanto, se puede repetir en esta clase.

Esto, por ejemplo, es utilizado por para cada ciclo:

for (Item item: items) {System.out.println (item); }

Este código SOLO funcionará con la condición de que "elementos" sea una clase que implemente la interfaz Iterable.

La interfaz Iterable tiene solo un método:

Iterador iterador ();

Devolverá un iterador, y JVM utilizará el iterador internamente para iterar sobre su objeto.

Un iterador es un objeto utilizado para iterar sobre otro objeto. Como un objeto puntero inteligente, que almacena el estado (actual, último, siguiente, hasNext ...).

Entonces se podría decir: Iterable es un árbol de peras. Iterator es una pera. Un árbol de peras "devuelve peras". Un árbol de peras no es una pera.

(No es una ilustración perfecta, tengo que admitirlo, pero bueno, espero que entiendas la idea ;-)

Código fuente iterable en línea (OpenJdk):

Iterable - java.lang.Iterable (.java) - Fuente de interfaz GrepCode

Código fuente del iterador en línea (OpenJdk):

Iterator - java.util.Iterator (.java) - Fuente de interfaz GrepCode


Respuesta 2:

Gracias por la A2A

Si algo implementa "Iterable", puede llamar al método .iterator () en él, y ha suministrado un objeto Iterator. Esto sucede 'debajo de las cubiertas' en un bucle for.

Un iterador es una instancia de objeto que recuerda dónde está en una colección de cosas. Cada vez que lo pidas, te dará lo siguiente en secuencia. También le dirá cuándo se ha quedado sin cosas.

Esperemos que un objeto Iterable le devuelva un iterador nuevo y nuevo cada vez. Entonces puede tener varias piezas de código de cliente que se iteran a su propia velocidad.


Respuesta 3:

Un iterador es una forma simple de permitir que algunos recorran una colección de datos sin privilegios de asignación (aunque con la capacidad de eliminarlos). Realiza un seguimiento del elemento actual y también a dónde irá a continuación.

Un Iterable es una representación simple de una serie de elementos que se pueden iterar. Simplemente nos da una idea de que una colección particular se puede repetir, por ejemplo, podemos comenzar desde el primer elemento y obtener el siguiente elemento, luego el siguiente y así sucesivamente.


Respuesta 4:

Un iterador es una forma simple de permitir que algunos recorran una colección de datos sin privilegios de asignación (aunque con la capacidad de eliminarlos). Realiza un seguimiento del elemento actual y también a dónde irá a continuación.

Un Iterable es una representación simple de una serie de elementos que se pueden iterar. Simplemente nos da una idea de que una colección particular se puede repetir, por ejemplo, podemos comenzar desde el primer elemento y obtener el siguiente elemento, luego el siguiente y así sucesivamente.