Ciclo foreach

Publicado el 17 de Septiembre, 2021
Java
Ciclo foreach
Tiempo de lectura aproximado: 10 minutos.

El bucle foreach es una sentencia de control que nos permite iterar estructuras de datos complejas, como son los arreglos y las listas. También es conocido como el ciclo for mejorado. En este post vamos a explicarte cómo funciona.

La forma tradicional de iterar nuestros arreglos es a través de un ciclo for. Cuando lo hacemos de esta manera, tenemos que especificar el tamaño de la lista en el ciclo y acceder a cada elemento a través del índice, de la siguiente manera:


    for (int i = 0; i < coleccion.length; i++) {
        System.out.println("Elemento: " + coleccion[i]);
    }
                            

Esta forma de hacerlo puede llegar a ser un poco engorros y difícil de leer, y más cuando empezamos a crear ciclos anidados.

Para eso llega el ciclo foreach()

El bucle foreach tiene una sintaxis parecida al ciclo for habitual, ya que también se declara con la palabra reservada for. Su sintaxis es la siguiente:


    for ([TipoDeDato] identificador: coleccion) {
        //Instrucciones
    }
                            

Donde [TipoDeDato] es, como su nombre lo dice, el tipo que contiene la colección que vamos a iterar. Por ejemplo, si es un arreglo de String, el tipo es String.

El identificador es el nombre que vamos a utilizar para acceder a cada valor en cada iteración.

Y coleccion es el conjunto de datos que vamos a iterar.

Como podrás darte cuenta, no estamos especificando ningún índice y tampoco el número de iteraciones que hará el ciclo foreach. Veamos un ejemplo:


    Integer[] numerosPrimos = {2, 3, 5, 7, 9, 13};
    for (Integer num : numerosPrimos) {
        System.out.println("Elemento: " + num);
    }
                            

Al ejecutarlo, tendremos como salida lo siguiente:

    
        Elemento: 2
        Elemento: 3
        Elemento: 5
        Elemento: 7
        Elemento: 9
        Elemento: 13
    
                            

El ciclo foreach automáticamente recorre toda la colección que le indiquemos, y cada elemento será almacenado en num en cada iteración.

A primera vista parece que es mejor utilizar foreach que el ciclo for habitual, pero no siempre es así. Si necesitamos del uso de los índices que nos proporciona el ciclo for, hacer uso de foreach no será viable. Identificar cuándo utilizar uno u otro es indispensable.

Limitaciones del ciclo foreach

Un paso a la vez

Al usar foreach, estaremos recorriendo de principio a fin toda la colección, un elemento a la vez, es decir que si necesitamos avanzar más posiciones en cada iteración, aquí no será posible. Para estos casos es mejor utilizar un ciclo for normal.

¿Y si queremos recorrer la lista empezando por el final?

Esto tampoco es posible, ya que siempre se recorrerá la lista empezando por el primer elemento que se encuentre hasta el último de la colección.

Sólo lectura

Y la limitación más grande es que no se pueden modificar los valores de los arreglos al hacer uso de foreach.


    Integer[] numerosPrimos = {2, 3, 5, 7, 9, 13};
    for (Integer num : numerosPrimos) {
        if(num == 5) {
            num = 99;
        }
    }
                            

Al visualizar el contenido del arreglo, podremos notar que no hubieron cambios en los valores.

    
        Elemento: 2
        Elemento: 3
        Elemento: 5
        Elemento: 7
        Elemento: 9
        Elemento: 13
    
                        

La razón es que la variable num del ciclo foreach no está haciendo referencia a cada elemento del array. Por lo cual para modificarlo tendríamos que hacer uso de un índice. (Que el foreach no tiene).

Conclusión

El método foreach es una estructura de control que nos permite iterar colecciones más fácilmente que con un ciclo for habitual, sin embargo tiene algunas limitaciones, por lo cual es indispensable saber cuál utilizar dependiendo de nuestras necesidades.

No olvides visitar nuestra cuenta de Instagram @codigazosit

Te compartimos el post de este artículo por si tienes alguna duda o comentario.

Instagram Post: Ciclo foreach

¡Muchas gracias por tu visita!

Encuéntranos en nuestras redes
Donaciones