MENU

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

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

for-each 循环

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

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

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

针对于传统的 for 循环可能会换这样的错误
copy
  • 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::