未央花博客

Effective Java学习记录(未完待续)

for-each循环

 for-each循环(官方称为成为增强的for语句),完全的隐藏迭代器或者索引变量,避免出错的可能。

for(Element e : elements) {
    ...//Do something with e
}

 这个冒号(:)可以把读作“在......里面”,利用for-each循环不会有性能损失。

针对于传统的for循环可能会换这样的错误
enum Face {ONE,TWO,THREE,FOUR,FIVE,SIX}
...
Collection<Face> faces = EnumSet.allof(face.class);
for(Iterator<FAce> i = faces.iterator(); i.hasNext();)
    for(Iterator<Face> j = faces.iterator(); j.hasNext(); )
        System.out.println(i.next() + " " + j.next());

 这个程序只能打印6个重复的词(从 “ONE ONE ”到 “SIX SIX”),而不是预计的那36中组合

三种无法使用for-each循环

 1、解构过滤——如果需要遍历集合,并删除选定元素,就需要显示的迭代器

 2、转换——如果遍历列表和数组,并取代它的部分值或全部。

 3、平行迭代——并行遍历多个集合,就需要显示控制迭代器或索引变化

总而言之,for-each循环在简洁性、灵活性、出错预防行方面都占有绝对优势,并且没有性能的惩罚,因此,有选择时,建议使用for-each循环

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »