Generic For Loop in Java - GeeksforGeeks

31 Mar, 2022
When we know that we have to iterate over a whole set or list, then we can use Generic For Loop. Java’s Generic has a new loop called for-each loop. It is also called enhanced for loop. This for-each loop makes it easier to iterate over array or generic Collection classes.
In normal for loop, we write three statements :
for( statement1; statement 2; statement3 )
{
     //code to be executed 
}
Statement 1 is executed before the execution of code, Statement 2 states the condition to be satisfied to execute the code and Statement 3 gets executed after the execution of the code block.
But if we look into the Generic For loop or for-each loop,
The generic for loop consists of three parameters :
Iterator function: It gets called when the next value is needed. It receives both the invariant state and control variable as parameters. Returns nil signals for termination.
Invariant state: This doesn’t change during the iteration. It is basically the subject of the iteration such as String, table or user data.
Control variable: It represents the initial value of the iteration.
Syntax 
for( ObjectType variable : iterable/array/collections ){

     // code using name variable
}
Equivalent to 
for( int i=0 ; i< list.size() ; i++) {

   ObjectType variable = list.get(i);

   // statements using variable
}
Example: 
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
Example: Showing that 
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
1. Not appropriate when we want to modify the list.
for( Integer var : arr)
{
     // only changes the var value and not the value of the data stored inside the arr
     var = var + 100; 
} 
 2. We cannot keep track of the index.
for( Integer var : arr){
     
     if(var == target)
     {   
         // don't know the index of var to be compared with variable target         
         return **; 
     }           
} 
4. Iterates a single step in forward direction only.
// This cannot be converted to Generic for loop
for( int i = n-1 ; i >= 0 ; i-- ) {

     // code
                            
}                  
4. Cannot process two decision-making statements at once.
// This loop cannot be converted to Generic for loop
for( int i = 0; i < arr.length; i++ ) {

     if( arr[i]==num )
         return **;
}                            
sweetyty
sagartomar9927
Java-Generics
Java
Java
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Constructors in Java
Stream In Java
Exceptions in Java
Different ways of Reading a text file in Java
Functional Interfaces in Java
Java Programming Examples
StringBuilder Class in Java with Examples
Checked vs Unchecked Exceptions in Java
Comparator Interface in Java with Examples
Strings in Java