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循环