Ways of iterating
Use for each liberally
Iterator
instead of a for
-loop.
The traditional for
-loop always uses an explicit loop index - an integer that identifies
each iteration.
The problem is that loop indexes have always been a fruitful source of error.
For example,
off-by-one errors
are very common in programming, and they are often related to these loop indexes.
In addition, the (somewhat unnatural) computer science tradition of starting loop indexes
from 0
instead of 1
often contributes to these sorts of bugs.
Since they are more error prone, for
-loops with indexes should generally be avoided,
in favor of the more robust, compact, and elegant for-each
loop.
Example
import java.util.*; /** Different iteration styles. */ public class IterateNoIndex { /** * Iterating without an index is more compact and less * error prone. */ public void withoutIndex(){ //for-each loop is usually preferred List<String> trees = Arrays.asList("Maple", "Birch", "Poplar"); for(String tree: trees){ log(tree); } //Iterators are not as compact as a for-each loop //but sometimes you need them: removing/replacing items, //and 'parallel' iterations across two data structures Iterator<String> iter = trees.iterator(); while (iter.hasNext()) { log(iter.next()); } } /** Iterating with an index is more error prone. */ public void withIndex(){ //traditional for-loop for(int idx=0; idx < 10; ++idx){ log("Iteration..." + idx); } } // PRIVATE private void log(String aMessage){ System.out.println(aMessage); } }