for(Element e : elements) {
    doSomething(e);
}
       for-each循环在简洁性和预防BUG方面有着传统的for循环无法比拟的优势,并且没有性能损失。应该尽可能地使用for-each循环。遗憾的是,有三种常见的情况无法使用for-each循环:
1.过滤——如果需要遍历集合,并删除选定的元素,就需要使用显式的迭代器,以便可以调用它的remove方法。
2.转换——如果需要遍历列表或者数组,并取代它部分或者全部的元素之,就需要列表迭代器或者数组索引,以便设定元素的值。
3.平行迭代——如果需要并行地遍历多个集合,就需要显式的控制迭代器或者索引变量,以便所有的迭代器或者索引变量都可以得到同步前移。