for-each循环和传统的for循环相比的优点:1.简洁性,2.预防bug的优势,3.无性能损失。因此能够用for-each的尽量用for-each,不要用for循环。collectios和arrays都能使用for-each。只要事先了iterable接口的类都能使用for-each。
但是有些情况下不能使用for-each:1.过滤,要删除指定的元素时,不能用for-each。2.转换,但需要遍历list或者array修改部分或者全部数值的时候,需要记录起始位置和结束为止的迭代器或索引变量。3.并行迭代,当需要并行迭代不同的集合时,需要迭代器变量或者索引时候,不能用for-each
reference:
effective java 第二版 机械工业出版社