For Loop genérico en Java

Cuando sabemos que tenemos que iterar sobre un conjunto completo o una lista , entonces podemos usar Generic For Loop. Java’s Generic tiene un nuevo bucle llamado bucle for-each . También se llama bucle for mejorado . Este bucle for-each facilita la iteración sobre arrays o clases de colección genéricas.

En el bucle for normal , escribimos tres declaraciones:

for( statement1; statement 2; statement3 )
{
     //code to be executed 
}

La instrucción 1 se ejecuta antes de la ejecución del código, la instrucción 2 establece la condición que se debe cumplir para ejecutar el código y la instrucción 3 se ejecuta después de la ejecución del bloque de código.

Pero si observamos el bucle For genérico o el bucle for-each ,

El bucle for genérico consta de tres parámetros:

  • Función de iterador : se llama cuando se necesita el siguiente valor. Recibe tanto el estado invariable como la variable de control como parámetros. Devuelve señales nulas para la terminación.
  • Estado invariable: esto no cambia durante la iteración. Es básicamente el tema de la iteración, como String, tabla o datos de usuario.
  • Variable de control: Representa el valor inicial de la iteración.

Sintaxis 

for( ObjectType variable : iterable/array/collections ){

     // code using name variable
}

Equivalente a 

for( int i=0 ; i< list.size() ; i++) {

   ObjectType variable = list.get(i);

   // statements using variable
}

Ejemplo: 

Java

// Java program to illustrate Generic for loop
 
import java.io.*;
 
class GenericsForLoopExample {
   
    public static void main(String[] args)
    {
        // create an array
        int arr[] = { 120, 100, 34, 50, 75 };
 
        // get the sum of array elements
        int s = sum(arr);
 
        // print the sum
        System.out.println(s);
    }
 
    // returns the sum of array elements
    public static int sum(int arr[])
    {
 
        // initialize the sum variable
        int sum = 0;
 
        // generic for loop where var stores the integer
        // value stored at every index of array
        for (int var : arr) {
            sum += var;
        }
 
        return sum;
    }
}
Producción

379

Ejemplo: Demostrando que 

Java

// Java program to demonstrate that Generic
// for loop can be used in iterating
// Collections like HashMap
 
import java.io.*;
import java.util.*;
 
class EnhancedForLoopExample {
   
    public static void main(String[] args)
    {
        // create a empty hashmap
        HashMap<String, String> map = new HashMap<>();
 
        // enter name/url pair
        map.put("GFG", "geeksforgeeks.org");
        map.put("Github", "www.github.com");
        map.put("Practice", "practice.geeksforgeeks.org");
        map.put("Quiz", "quiz.geeksforgeeks.org");
 
        // using keySet() for storing
         // all the keys in a Set
        Set<String> key = map.keySet();
 
        // Generic for loop for iterating all over the
        // keySet
        for (String k : key) {
            System.out.println("key :" + k);
        }
 
        // Generic for loop for iterating all over the
        // values
        for (String url : map.values()) {
            System.out.println("value :" + url);
        }
    }
}
Producción

key :Quiz
key :Github
key :Practice
key :GFG
value :quiz.geeksforgeeks.org
value :www.github.com
value :practice.geeksforgeeks.org
value :geeksforgeeks.org

Limitaciones de Generic For loop o for-each loop:

1. No apropiado cuando queremos modificar la lista.

for( Integer var : arr)
{
     // only changes the var value and not the value of the data stored inside the arr
     var = var + 100; 
} 

 2. No podemos realizar un seguimiento del índice.

for( Integer var : arr){
     
     if(var == target)
     {   
         // don't know the index of var to be compared with variable target         
         return **; 
     }           
} 

4. Itera un solo paso solo en dirección hacia adelante .

// This cannot be converted to Generic for loop
for( int i = n-1 ; i >= 0 ; i-- ) {

     // code
                            
}                  

4. No puede procesar dos declaraciones de toma de decisiones a la vez.

// This loop cannot be converted to Generic for loop
for( int i = 0; i < arr.length; i++ ) {

     if( arr[i]==num )
         return **;
}                            

Publicación traducida automáticamente

Artículo escrito por goelshubhangi3118 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *