13 nov 2014

Estructuras de control en Java - El bucle for – each


Dentro de las estructuras de control repetitivas, Java cuenta con los tradicionales while(), do-while() y for () con estructuras idénticas a las utilizadas en C y en C++, con la salvedad de la condición de iteración que tiene que ser un valor lógico, no valiendo un valor numérico.

Java además, a partir de la versión 5, incorpora el bucle, conocido como for each.
  • Se utiliza de manera especial para controlar arrays o en general colecciones. 
  • Tiene la ventaja de no tener que utilizar una variable para controlarlo. 
  • Su funcionamiento se basa en iterar para cada uno de los elementos de la colección, sin necesidad de conocer el número de elementos de los que consta.


El formato de este bucle es: 

for( tipo var_elto: var_array){
//instrucciones
}

Su funcionamiento, consiste en ir tomando cada elemento del array var_array, que serán del tipo tipo_var y lo copia en var_elto para su procesamiento.


Ejemplo, for each frente a for tradicional:

public static void main(String[] args){
    int[] lista = {1, 2, 3, 4};
     // recorrido del array
    for(int n : lista)
        System.out.println(n);
     // recorrido del array con el for tradicional
 for(int i=0; i< lista.length; i++ )
        System.out.println(lista[i]);
}


Ejemplo, con una colección:

public static void main(String[] args){
    …
  ArrayList<String> aList = new ArrayList<String>();
    aList.add(“Madrid”);
    aList.add(“Palencia”);
    aList.add(“Guadalajara”);
  // recorrido de una colección
    for(String s : aList)
        System.out.println(s);
}


Ejemplo, procesando una matriz por filas y columnas: 

public static void main(String[] args){
    int[][] matriz;
  for (int[] fila : matrix) {
         for (int elto : fila) {
                System.out.printf("%8d", elto);
            }
      System.out.printf(“%n");
     }
}


Equivalente con el for tradicional: 

public static void main(String[] args){
    int[][] matriz;
  for (int i=0; i < matriz.length; i++) {
         for (int j=0; j < matriz[0].length; j++) {
                System.out.printf("%8d", matriz[i][j]);
            }
      System.out.printf(“%n");
     }

}

No hay comentarios:

Publicar un comentario