For-Each循环~增强for循环

某人问我增强for循环是什么,其实我只是会用,所以上网查了一下,如下:

For-Each循环

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

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

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

其语法如下:

  for(type 变量名: array)

  {

        System.out.println(变量名);

  }

例子

  其基本使用可以直接看代码:

  代码中首先对比了两种for循环;之后实现了用增强for循环遍历二维数组;最后采用三种方式遍历了一个List集合。

  

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class ForeachTest
{
    public static void main(String[] args)
    {
        int[] arr = {1, 2, 3, 4, 5};

        System.out.println("----------旧方式遍历------------");
        //旧式方式
        for(int i=0; i<arr.length; i++)
        {
            System.out.println(arr[i]);
        }

        System.out.println("---------新方式遍历-------------");

        //新式写法,增强的for循环
        for(int element:arr)
        {
            System.out.println(element);
        }

        System.out.println("---------遍历二维数组-------------");

        //遍历二维数组

        int[][] arr2 = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}} ;

        for(int[] row : arr2)
        {
            for(int element : row)
            {
                System.out.println(element);
            }
        }

        //以三种方式遍历集合List

        List<String> list = new ArrayList<String>();

        list.add("a");
        list.add("b");
        list.add("c");

        System.out.println("----------方式1-----------");
        //第一种方式,普通for循环
        for(int i = 0; i < list.size(); i++)
        {
            System.out.println(list.get(i));

        }

        System.out.println("----------方式2-----------");
        //第二种方式,使用迭代器
        for(Iterator<String> iter = list.iterator(); iter.hasNext();)
        {
            System.out.println(iter.next());
        }
        System.out.println("----------方式3-----------");
        //第三种方式,使用增强型的for循环
        for(String str: list)
        {
            System.out.println(str);

        }
    }

}

任何新特性有利就一定会有一些弊端,增强for循环在简洁的同时也是有缺点的:

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

2.增强for循环和iterator遍历的效果是一样的,也就说 增强for循环的内部也就是调用iteratoer实现的,但是增强for循环 有些缺点,例如不能在增强循环里动态的删除集合内容。不能获取下标等。

本文引用自:http://www.cnblogs.com/mengdd/archive/2013/01/21/2870019.html

时间: 2024-11-11 07:37:52

For-Each循环~增强for循环的相关文章

Iterator&amp;Map&amp;List&amp;LinkedHashMap&amp;普通for循环&amp;增强for循环&amp;bean

博主老早就想总结一下,但是迫于没时间,感觉只是给自己找借口,但是现在花了一上午,终于整理好了,而且注释比较详细,废话不多说,现在上代码: 首先,博主自定义了一个bean类,为了测试自定义的那个list 这个bean里面博主把常用的类型基本都用了,但是不建议大家定义的时候使用float,真心很麻烦 另外就是get/set这一块,注意boolean类型是is和set,不是get,这个大家注意下 package cn.edu.sjzc.weiaccept.bean; /** * Created by

(14)jdk1.5开始的一些新特性:静态导入,增强for循环,可变参数,自动装箱/拆箱,枚举类型

Jdk1.5新特性之静态导入 jdk1.5新特性值静态导入 静态导入的作用:简化缩写 静态导入的作用:可以作用一个类的所有静态成员. 静态导入的格式:import static 包名.类名.静态的成员 import static java.util.Collections.sort; //静态导入指定的某个静态成员方法 import static java.util.Collections.*;  导入所有的静态成员 除了可以导入静态的成员方法,也可以静态的导入成员变量,比如System.out

jdk1.5出现的新特性----&gt;增强for循环

package cn.itcast.jdk15; import java.util.HashMap;import java.util.HashSet;import java.util.Iterator;import java.util.Map;import java.util.Set; /*jdk1.5出现的新特性---->增强for循环 增强for循环的作用: 简化迭代器的书写格式.(注意:增强for循环的底层还是使用了迭代器遍历.) 增强for循环的适用范围: 如果是实现了Iterable接

Java重要技术(3)语法之增强for循环

1.1. 增强for循环 增强for循环可以在某些时候简化对数组和集合的遍历.增强for循环需要集合实现了Iterable接口. public static void main(String[] args) { //遍历数组 for(String s : args){ System.out.println(s); } ArrayList<Integer> arrayList = new ArrayList<Integer>(); arrayList.add(1); arrayLis

Iterator迭代器与增强for循环

java中提供了很多个集合,它们在存储元素时,采用的存储方式不同.我们要取出这些集合中的元素,可通过一种通用的获取方式来完成. Collection集合元素的通用获取方式:在取元素之前先要判断集合中有没有元素,如果有,就把这个元素取出来,继续在判断,如果还有就再取出出来.一直把集合中的所有元素全部取出.这种取出方式专业术语称为迭代. 集合中把这种取元素的方式描述在Iterator接口中.Iterator接口的常用方法如下: hasNext()方法:用来判断集合中是否有下一个元素可以迭代.如果返回

如何正确遍历删除List中的元素(普通for循环、增强for循环、迭代器iterator、removeIf+方法引用)

遍历删除List中符合条件的元素主要有以下几种方法: 普通for循环 增强for循环 foreach 迭代器iterator removeIf 和 方法引用 (一行代码搞定) 其中使用普通for循环容易造成遗漏元素的问题,增强for循环foreach会报java.util.ConcurrentModificationException并发修改异常. 所以推荐使用迭代器iterator,或者JDK1.8以上使用lambda表达式进行List的遍历删除元素操作. 以下是上述几种方法的具体分析: 1.

Java Iterator和增强for循环 for each详解

Iterator是Java中的一个迭代器接口(Interface),用来提供标准的Java迭代器 Iterator支持泛型因为集合(Collection)类可以装入的类型是不确定的,从集合中取出的都是Object类型,加入泛型,就是告诉编译器确定要装入的对象类型,取值时就无需强制转换了. for each 是 Java 5 中新增的一个循环结构,本质上是一个Iterator,特点是可以用来遍历集合元素而不用考虑集合下标. 综合实例: package net.csdn.shf4715; impor

Java学习——增强for循环、switch

增强for循环 Java5引入了一种主要用于数组的增强型for循环. 例子 public class ForTest { public static void main(String args[]){ int [] numbers = {1, 3, 5, 7, 2, 4, 6, 8}; for (int x: numbers){ System.out.print(x); System.out.print(","); } System.out.println(); String [] n

Java5新特性之静态导入、可变参数、增强for循环、自动拆装箱

JDK1.5已经发布很长时间,之所以还拿出来是因为它增加了很多个重要的特性,使用这些特性有助于我们简化开发,编写的代码更加简洁清晰安全,主要有以下几个特性: ?  静态导入 ?  可变参数 ?  增强for循环 ?  自动拆装箱 ? 泛型 ? 枚举 由于泛型.枚举内容比较多,也最重要,之后单拿出来讲.这里先介绍前面四个简单而又实用的小特性. 1. 静态导入 所谓"静态导入"只不过是在普通的import语句中加入关键字static,例如: ?  非静态导入:import java.lan