¿Qué relación hay entre Iterator<T> e Iterable<T>?

Cuando una clase implementa la interface Iterable<T> tiene que proporcionar un método que devuelva un iterador

class X implements Iterable<T> {

    public Iterator<T> iterator();

    . . .

}

 

Java, visto que la clase tiene ese método, permite hacer bucles de forma aún más compacta

forma compacta

X x = new X(...);

 

for (T elemento: x) {

    . . . se hace lo que se tenga que hacer con cada elemento

}   

forma equivalente desarrollada

X x = new X(...);

 

Iterator<T> ite = x.iterator();

while (ite.hasNext() {

    T elemento = ite.next();

    . . . se hace lo que se tenga que hacer con cada elemento

}

 

Temas relacionados

21. Iterator<E> (interface) java.util.Iterator<E>