
A partir de Java 5.0 se ha introducido una construcción de bucles muy potente que permite al programador iterar a través de cada elemento de un array o arreglo, así como otras colecciones de elementos sin tener que preocuparse por los valores de los índices del bucle. El bucle for each establece una variable dada a cada elemento de la colección y a continuación ejecuta las sentencias del bloque.
Sintaxis
for(variable : colección)
sentencia;
La expresión colección debe ser un arreglo (array) o un objeto de una clase que implemente la interfaz Iterable, como lista de arreglos, ArrayList, etc.
Ejemplo
Visualizar cada elemento de un arreglo en una lista independiente.
int [] m = new int[100]; // array
. . .
for(int elemento : m)
System.out.println(elemento);
El bucle se lee así: «para (for) cada (each) elemento de m». Los diseñadores de Java consideraron para nombrar el bucle, en primer lugar foreach e in, pero al final optaron por continuar con el código antiguo y la palabra reservada for para evitar conflictos de nombres de métodos o variables ya existentes como System.in.
El efecto anterior del recorrido de colecciones se puede conseguir con un bucle for estándar, aunque el bucle «for each» es más conciso y menos propenso a errores. Un bucle equivalente al anterior es:
for(int j=0;j<m.length;j++)
System.out.println(m[ j ]);
Nota
- El «for each» se puede interpretar como «por cada valor de… hacer las siguientes acciones».
- La variable del bucle «for each» recorre los elementos de la colección o el arreglo (array) y no los valores de los índices.
El bucle «for each» es una mejora sustancial sobre el bucle tradicional en el caso de que se necesite procesar todos los elementos de una colección. Posteriormente se amplia el concepto del bucle «for each» al tratar los arreglos.