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; } }
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); } } }
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