foreach循环优于传统for循环

今天在用for each语句的时候突然想到for each与普通for循环有什么区别,于是谷歌之。发现答案居然就在《effective java》里,看来还是要多啃书。
总结下:

  1. foreach循环隐藏了索引变量或迭代器,语法更加简介,减少出错可能。
  2. foreach循环对数组索引边界值只计算一次,传统for循环中,可能由于程序员习惯,将索引边界值写在for的表达式里,会使边界值计算执行多次。从这点上看, foreach循环还有点效率优势。

当然,书中还提到了foreach的缺点,但是我觉得,其中至少有两个缺点对于现在的程序员来说,问题不大。
foreach无法满足的编程需求有:

  1. 过滤:如遍历集合并删除其中的一些元素。我觉得对于这样的需求,可以另外new一个集合,存储过滤后的元素,然后返回新new的集合就好了。
  2. 转换:遍历集合时需要改变集合中某些元素的内容。对于这个需求的解决方法同上。
  3. 平行迭代:同时并行的遍历多个集合。好吧,你赢了,这个无法用foreach实现了,也没想到合适的替代方案。

恩,就这样啦。