Las estructuras de control en programación son de gran utilidad, nos permiten manipular la funcionalidad de nuestro proyecto y alterar el flujo normal de nuestro programa según nos convenga.
Dentro de las estructuras de control hay una particularmente interesante: el for each o foreach
El foreach, también conocido como “for extendido” es un bucle constructor al que no necesitamos definir el número de componentes a recorrer como tendríamos que hacerlo con un for normal.
Esta estructura nos permite de forma muy simple recorrer un array o vector y realizar acciones sobre ellos sin la necesidad de utilizar un iterador o un bucle for clásico.
Esta facilidad de recorrer de manera sencilla una colección de elementos hace del foreach una de las estructuras más utilizadas en Java, ya que generalmente estaremos recorriendo colecciones de objetos.
La sintaxis de este bucle constructor es simple, primeramente definimos el array, luego la palabra for() y dentro del paréntesis colocamos el tipo de dato (String, int, float, etc.), el nombre de la variable que va a recibir el valor extraído del array, luego (:) y el nombre del array que vamos a iterar y por último abrimos {} y dentro de las llaves escribimos la acción que va a realizarse sobre la variable.
Ejemplo:
int[] numeros = {2,4,6,8,10,12}; //definimos el array
for (int numero: numeros) //tipo de dato, variable receptora, array
{
System.out.println("el número es " + numero) //acciones a realizarse sobre la variable
}
La salida por pantalla de esta instrucción es:
el número es 2
el número es 4
el número es 6
el número es 8
el número es 10
el número es 12
La diferencia más notable que tiene el foreach respecto del bucle for normal, es la simplicidad del código y la eficiencia para recorrer un array[], ArrayList o List, también tiene algunas desventajas, veamos un poco más en detalle.
¿Cómo consigue el foreach recorrer una matriz de forma tan sencilla?
Esto se debe a que Java emplea la interfaz genérica “Collection” cuyo propósito es brindar una forma más completa y orientada a objetos de guardar conjuntos de datos similares.
Un conjunto de datos similares es una colección de elementos, estos elementos heredan de la interfaz “Collection” que a su vez hereda de la interfaz “Iterable” que es la desarrollada específicamente para recorrer conjuntos de datos de manera simple.