建议:for-each循环优先于传统的for循环。

for(Element e : elements) {

    doSomething(e);

}

        当见到冒号(:)时,可以把他读作“在...里面”。因此上面的循环可以读作“对于元素中的每个元素e”。注意,利用for-each循环不会有性能损失,甚至用于数组也一样。实际上,在某些情况下,比起普通的for循环,他还稍有些性能优势,因为他对数组索引的边界值只计算一次。虽然可以手工完成这项工作,但程序员并不总会这么做。

        在对多个集合进行嵌套式迭代时,for-each循环相对于传统for循环的这种优势还会更加明显。

        for-each循环不仅让你遍历集合和数组,还让你遍历任何实现Iterable接口的对象。

        实现Iterable接口并不难。如果你在编写的类型表示的是一组元素,即使你选择不让他实现Collection,也要让他实现Iterable。这样可以允许用户利用for-each循环遍历你的类型,会令用户永远感激不尽的。

        总之,for-each循环在简洁性和预防Bug方面有着传统的for循环无法比拟的优势,并且没有性能损失。应该尽可能的使用for-each循环。遗憾的是,有三种常见的情况无法使用for-each循环:

  • 过滤——如果需要遍历集合,并删除选定的元素,就需要使用显示的迭代器,以便可以调用他的remove方法。
  • 转换——如果需要遍历列表或者数组,并取代他部分或者全部的元素值,就需要列表迭代器或者数组索引,以便设定元素的值。
  • 平行迭代——如果需要并行的遍历多个集合,就需要显式的控制迭代器或者索引变量,以便所有迭代器或者索引变量都可以得到同步前移。

    在以上任何一种情况下,就要使用普通的for循环,要警惕提到的陷阱,并且要确保做到最好。
   

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值