MENU

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

January 11, 2020 • Read: 4595 • 学习记录

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

Last Modified: February 19, 2020
Leave a Comment

3 Comments
  1. 蚩尤 蚩尤     Windows 10 /    Google Chrome

    一个for-each 有啥好写的

  2. 蚩尤 蚩尤     Windows 10 /    Google Chrome

    来踩一踩

    1. Emt-lin Emt-lin     Windows 10 /    QQ浏览器

      @蚩尤大佬快学习::quyin:cry::