Pregunta

Soy un principiante y no entiendo el efecto real de la Iterable la interfaz.

¿Fue útil?

Solución

Además de lo que dijo Jeremy, su principal ventaja es que tiene su propio poco de azúcar sintáctico: la mejorado para-loop . Si usted tiene, por ejemplo, un Iterable<String>, que puede hacer:

for (String str : myIterable) {
    ...
}

agradable y fácil, ¿verdad? Todo el trabajo sucio de la creación de la Iterator<String>, comprobando si hasNext(), y llamando str = getNext() se maneja detrás de las escenas por el compilador.

Y puesto que la mayoría de las colecciones ya sea aplicar Iterable o tener una vista que devuelve uno (como Map 's keySet() o values()), esto hace que el trabajo con colecciones mucho más fácil.

El Javadoc <=> da una lista completa de clases que implementan <=>.

Otros consejos

Si usted tiene un conjunto de datos complicado, como un árbol o una cola helicoidal (sí, lo que acaba de hacer eso), pero no se preocupan cómo está estructurado internamente, lo que desea es obtener todos los elementos uno por uno, se obtiene que retorne un iterador.

El objeto complejo en cuestión, ya sea un árbol o una cola o un WombleBasket implementa Iterable, y puede devolver un objeto iterador que se puede consultar usando los métodos iterador.

De esta manera, se puede simplemente pregunta que si hasNext(), y si lo hace, se obtiene el next() artículo, sin tener que preocuparse por dónde conseguirlo del árbol o donde sea.

Devuelve un java.util.Iterator.Se utiliza principalmente para ser capaz de utilizar la aplicación escriba en el bucle for mejorado

List<Item> list = ...
for (Item i:list) {
 // use i
}

Bajo el capó, el compilador llama a la list.iterator() y la recorre dando la i dentro del bucle for.

Una interfaz es en su esencia una lista de métodos que una clase debe implementar. La interfaz iterable es muy simple - sólo hay un método para poner en práctica: Iterator(). Cuando una clase implementa la interfaz Iterable, es revelador otras clases que usted puede obtener un objeto Iterator utilizar para repetir (es decir, transversal) los datos del objeto.

Los iteradores básicamente permitir la iteración sobre cualquier colección.

Es también lo que se requiere para utilizar Java para-cada sentencia de control.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top