90 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| title: For Each Loop
 | |
| ---
 | |
| # For Each Loop
 | |
| 
 | |
| Also called the enhanced `for` loop, it is an extremely useful and simple way to iterate over each item in a collection, array or any object that implements the `Iterable` interface.
 | |
| 
 | |
| ```java
 | |
| for (object : iterable)
 | |
| {
 | |
|     // Statements
 | |
| }
 | |
| ```
 | |
| 
 | |
| The loop is read as, "for each element in the `iterable` (could be an array, collectable etc.)". The `object` type must match the element type of the `iterable`.
 | |
| 
 | |
| ```java
 | |
| int[] number_list = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
 | |
| 
 | |
| for (int numbers : number_list)
 | |
| {
 | |
|     System.out.print(numbers + " ");
 | |
|     // Iterated 10 times, numbers 0,1,2...9
 | |
| }
 | |
| ```
 | |
| 
 | |
| Output:
 | |
| ```
 | |
|     0 1 2 3 4 5 6 7 8 9
 | |
| ```
 | |
| :rocket:<a href='https://repl.it/CJYs/0' target='_blank' rel='nofollow'>Run Code</a>
 | |
| 
 | |
| 
 | |
| Comparing this with the traditional `for` loops :
 | |
| 
 | |
| ```java
 | |
| 
 | |
| int[] number_list = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
 | |
| 
 | |
| for(int i=0;i < number_list.length;i++)
 | |
| {
 | |
|   System.out.print(number_list[i]+" ");
 | |
|       // Iterated 10 times, numbers 0,1,2...9
 | |
| 
 | |
| }
 | |
| 
 | |
| ```
 | |
| Output:
 | |
| ```
 | |
|     0 1 2 3 4 5 6 7 8 9
 | |
| ```
 | |
| :rocket:<a href='https://repl.it/NJfG/0' target='_blank' rel='nofollow'>Run Code</a>
 | |
| 
 | |
| Both the above pieces of code snippets do the same work , however , clearly, the for each loops offer advantages in making iteration through and accessing of elements of a collection(array,in our case) easier.
 | |
| 
 | |
| With the enhanced for loops we no longer need to mention starting and ending points for the loop,thus reducing OutofBounds errors.
 | |
| The need for loop counters and manual indexing are removed, and readability of the code is improved. 
 | |
| 
 | |
| If we do want a loop counter for a for each loop, all we have to do is create a variable outside the loop and iterate within it.
 | |
| 
 | |
| It is important to note that making changes to the iterating variable for enhanced for loops within the loop causes no changes to the original collection elements.
 | |
| 
 | |
| 
 | |
| Enhanced for loops can also be used with multidimensional arrays or other Java collections.
 | |
| An example of its usage with multidimenisonal arrays are shown below:
 | |
| 
 | |
| ```java
 | |
| int number_list_new[][]={  {  0,  1, 2},
 | |
|                   {  3, 4, 5},
 | |
|                   { 6, 7, 8} };
 | |
|                   
 | |
| // Because 2d arrays are implemented as "arrays of arrays",the first iteration variable iterates 
 | |
| // through 3 such arrays(that is, the 3 rows of testarr[][]) 
 | |
| for(int i[] : number_list_new)  
 | |
| {
 | |
|   for(int j : i){
 | |
|     System.out.print(j+" ");
 | |
|   }
 | |
| }
 | |
| ```
 | |
| Output:
 | |
| ```
 | |
| 0 1 2 3 4 5 6 7 8  
 | |
| ```
 | |
| :rocket: <a href='https://repl.it/NJhP/0' target='_blank' rel='nofollow'>Run Code</a>
 | |
| 
 | |
| 
 | |
| 
 | |
| In the above code snippets, `number_list` is an array. If you don't know what this is, don't worry about it. An array is a container object that holds a fixed number of values of a single type, but more on this later.
 |