For-Each循环也叫增强型的for循环,或者叫foreach循环。

For-Each循环是JDK5.0的新特性(其他新特性比如泛型、自动装箱等)。

For-Each循环的加入简化了集合的遍历。

语法如下:

for(type element: array){  System.out.println(element);   }
 
 

Demo:

      public static void query()
      {
        List<Teacher> list = new ArrayList<Teacher>(); //list里存的是N个Teacher对象
        System.out.println("*****方式一*******"); //第一种方式 普通for循环 
        for(int i=0;i<list.size();i++)
        { Teacher t = (Teacher)list.get(i); 
        System.out.println(t.getName()); }
 
        System.out.println("*****方式二*******"); //第二种方式 使用迭代器 
        for(Iterator<Teacher> iter = list.iterator(); iter.hasNext();)
        { System.out.println(iter.next().getName()); }  
        System.out.println("*****方式三*******"); //第三种方式 增强型for循环
        for(Teacher t: list){ System.out.println(t.getName()); } }

For-Each循环的缺点:丢掉了索引信息。

当遍历集合或数组时,如果需要访问集合或数组的下标,那么最好使用旧式的方式来实现循环或遍历,而不要使用增强的for循环,因为它丢失了下标信息。

优点还体现在泛型 假如 set中存放的是Object



Set<Object> set = new HashSet<Object>();

for循环遍历:
  for (Object obj: set) {
       if(obj instanceof Integer){
                 int aa= (Integer)obj;
              }else if(obj instanceof String){
                String aa = (String)obj
              }
               ........
  }

如果你用Iterator遍历,那就晕了

map list 也一样
唯一的缺点就是 在遍历 集合过程中,不能对集合本身进行操作
   for (String str : set) {
    set.remove(str);//错误!
   }

For-Each循环的更多相关文章

  1. 【.net 深呼吸】细说CodeDom(8):分支与循环

    有人会问,为啥 CodeDom 不会生成 switch 语句,为啥没生成 while 语句之类.要注意,CodeDom只关心代码逻辑,而不是语法,语法是给写代码的人用的.如果用.net的“反编译”工具 ...

  2. Recurrent Neural Network系列1--RNN(循环神经网络)概述

    作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORKS T ...

  3. Python学习--04条件控制与循环结构

    Python学习--04条件控制与循环结构 条件控制 在Python程序中,用if语句实现条件控制. 语法格式: if <条件判断1>: <执行1> elif <条件判断 ...

  4. 模仿Linux内核kfifo实现的循环缓存

    想实现个循环缓冲区(Circular Buffer),搜了些资料多数是基于循环队列的实现方式.使用一个变量存放缓冲区中的数据长度或者空出来一个空间来判断缓冲区是否满了.偶然间看到分析Linux内核的循 ...

  5. 【JS基础】循环

    for 循环的语法: for (语句 1; 语句 2; 语句 3) { 被执行的代码块 } 语句 1 在循环(代码块)开始前执行 语句 2 定义运行循环(代码块)的条件 语句 3 在循环(代码块)已被 ...

  6. 【python之路4】循环语句之while

    1.while 循环语句 #!/usr/bin/env python # -*- coding:utf-8 -*- import time bol = True while bol: print '1 ...

  7. To Java程序员:切勿用普通for循环遍历LinkedList

    ArrayList与LinkedList的普通for循环遍历 对于大部分Java程序员朋友们来说,可能平时使用得最多的List就是ArrayList,对于ArrayList的遍历,一般用如下写法: p ...

  8. JavaScript单线程和浏览器事件循环简述

    JavaScript单线程 在上篇博客<Promise的前世今生和妙用技巧>的开篇中,我们曾简述了JavaScript的单线程机制和浏览器的事件模型.应很多网友的回复,在这篇文章中将继续展 ...

  9. .NET基础 一步步 一幕幕[循环、逻辑语句块]

    循环.逻辑语句块   好久不写博客了,断更了好几天了,从上周五到今天,从北京到上海,跨越了1213.0公里,从一个熟悉的城市到陌生的城市,还好本人适应力比较好,还有感谢小伙伴的接风咯,一切都不是事,好 ...

  10. Linux进程管理及while循环

    目录 进程的相关概念 进程查看及管理工具的使用 Linux系统作业控制 调整进程优先级 网络客户端工具 bash之while循环 20.1.进程类型 守护进程 daemon,在系统引导过程中启动的进程 ...

随机推荐

  1. 解决连接VPN后无法上网问题

    解决连接VPN后无法上网问题 VPN的英文全称是“Virtual Private Network”,翻译过来就是“虚拟专用网络”.顾名思义,虚拟专用网络可以把它理解成是虚拟出来的企业内部专线. 在公司 ...

  2. Entity Framework && Lambda

    Lambda表达式详细总结 C# 代码了解委托.匿名方法.Lambda 表达式和闭包本质 将使用了C# Lambda表达式的程序集反编译后,我们发现,它实际上和匿名方法没有什么不同.Lambda的输入 ...

  3. java语言的认识

    class Hello{ public static void main(String [] args) { System.out.println("Hello Word 你好") ...

  4. Intent 匹配规则

    1.在AndroidManifest.xml中可以为 每个 Activity,Service 设置多个Intent-Filter; 在系统启动和程序安装之后,android会收集AndroidMani ...

  5. [多校联考2 T3] 排列 (DP)

    DP Description 对于一个排列,考虑相邻的两个元素,如果后面一个比前面一个大,表示这个位置是上升的,用 I 表示,反之这个位置是下降的,用 D表示.如排列 3,1,2,7,4,6,5 可以 ...

  6. NavBarControl

    https://documentation.devexpress.com/#WindowsForms/clsDevExpressXtraNavBarNavBarControltopic Views h ...

  7. createjs 更新

    使用0.8.2版本 不在需要单独 引入 MovieClip 文件了

  8. openurl 跳转

    1.拨打电话: [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://68979"]]; ...

  9. [Mysql] 一些记录

    1> 修改表的字段 alter table trade_market change reqype reqtype int(10) unsigned not null;alter table tr ...

  10. LTE Module User Documentation(翻译15)——示例程序、参考场景以及故障检测和调试技巧

    LTE用户文档 (如有不当的地方,欢迎指正!)     21 Examples Programs(示例程序)   路径 src/lte/examples/ 包含一些示例仿真程序,这些例子表明如何仿真不 ...