Enhanced for Loops
Programmers frequently want to traverse a collection and visit each element for some processing. While an iterator can be used to do this, Java 5.0 provides some "syntactic sugar" for an iterator-based loop, in the form of an enhanced for loop. The following code segment shows the use of such a loop with a collection of strings:
for (String str : col){
// Do something with str
}
Like an iterator, an enhanced for loop relieves the programmer of the need to initialize, test, and update an index variable (when used with indexed collections). In our example, the variable str assumes the value of each element in the collection during the traversal. The scope of str is the body of the loop. The collection col can be any collection that implements the Iterable interface, including Java's built-in arrays, lists, sets, stacks, queues, priority queues, and many programmer-defined collections (see our TrueStack resource) .
The syntax of the enhanced for loop is simpler and more fool-proof than that of the iterator-based loop. However, the enhanced for loop does have several major limitations:
- When used with a linear collection, the traversal must start with the first element and visit the successors.
- When used with an array, the traversal must visit every element, unless the programmer breaks or returns.
- The collection itself cannot be modified during the traversal, although the state of individual elements may be modified.