Iterate without an index

来源:互联网 发布:同步看电视的软件 编辑:程序博客网 时间:2024/05/29 13:22

http://www.javapractices.com/topic/TopicAction.do?Id=88

Many programmers have a strong preference for using a for-each loop or an 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-eachloop.

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

0 0
原创粉丝点击