Considera:
List<String> someList = new ArrayList<String>();
// add "monkey", "donkey", "skeleton key" to someList
..;
for (String item : someList) {
System.out.println(item);
}
¿Cómo sería el bucle for
equivalente sin utilizar la sintaxis for each?
for (Iterator<String> i = someIterable.iterator(); i.hasNext();) {
String item = i.next();
System.out.println(item);
}
Ten en cuenta que si necesitas usar i.remove();
en tu bucle, o acceder al iterador real de alguna manera, no puedes usar el modismo for ( : )
, ya que el iterador real es simplemente inferido.
Como señaló Denis Bueno, este código funciona para cualquier objeto que implemente la interfaz Iterable
.
Además, si el lado derecho del modismo for (:)
es un array
en lugar de un objeto Iterable
, el código interno utiliza un contador de índice int y comprueba contra array.length
en su lugar. Véase la Especificación del Lenguaje Java.
El bucle for-each en Java utiliza el mecanismo subyacente de los iteradores. Así que es idéntico a lo siguiente:
Iterator<String> iterator = someList.iterator();
while (iterator.hasNext()) {
String item = iterator.next();
System.out.println(item);
}