黑马程序员技术交流社区

标题: 高级for循环比一般的循环好在哪里? [打印本页]

作者: 康健    时间: 2011-10-11 10:47
标题: 高级for循环比一般的循环好在哪里?
                              高级for循环比一般的循环好在哪里?   是不是用哪个都可以,还是分用在那个方法中?
作者: 丁林    时间: 2011-10-11 10:53
本帖最后由 丁林 于 2011-10-11 11:02 编辑

1.增强型的for循环 优点主要体现在集合中,语法简单。
比如对 set 的遍历:
一般是迭代遍历:
Set<String> set = new HashSet<String>();
    Iterator<String> it = set.iterator();
    while (it.hasNext()) {
        String str = it.next();
        System.out.println(str);
    }

for循环遍历:
for (String str : set) {
      System.out.println(str);
}
语法明显简单了!

2.优点还体现在泛型
假如 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 也一样

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

作者: 张洋铭    时间: 2011-10-11 11:03
1. 高级for循环,其实也就是迭代器而起,只能用于历遍数组中的每一个元素。

2. for 循环的功能要比迭代型for多很多,你可以设置循环次数,设置你想判断的条件,用于不同场合。而且for循环本身也可以通过条件的限定变成一个迭代器使用,此时和迭代型for是一样的,但后者语法简单。
作者: 刘浩    时间: 2011-10-11 11:05
JDK1.5版本以后出现的Collection的父接口Iterable。

该接口的出现,封装了iterator方法。并提供了新的语句 foreach语句。
也就是增强型的for循环


格式:
for(元素类型 变量名 : Collection集合|数组)
{

}

增强for循环和传统for循环有什么区别呢?

增强for循环有一个特点:必须要有被遍历的目标。
这个目标只能是Collection集合或者数组。

传统for循环可以定义三种表达式,来丰富循环的操作,
尤其是可以控制循环的增量。

所以,在遍历数组时,如果仅为遍历获取,两个for循环都行。
如果要对数组的元素进行操作,就需要用到指针,所以建议还是使用传统for循环。


class  Demo
{
        public static void main(String[] args)
        {

                method();



        }

        public static void method()
        {
                int[] arr = {4,5,1,7,5};

                for(int i : arr)
                {
                        System.out.println("i="+i);
                }
        }
}
作者: 颜庭飞    时间: 2011-10-14 00:55
好在循环遍历输出比较方便,不过增强for循环也有缺点,就是删除其中一个元素的时候不方便。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2