`

java新特性之For循环增强

 
阅读更多

1.首先增强for循环和iterator遍历的效果是一样的,也就说增强for循环的内部也就是调用iteratoer实现的,For循环变量必须是数组或实现了iteratoer的集合。

package com.shengsiyuan.jdk5;

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

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

		// 旧式方式
		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("--------------------------");

		String[] names = { "hello", "world", "welcome" };

		for (String name : names)
		{
			System.out.println(name);
		}

		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);
			}
		}
		
		System.out.println("--------------------------");
		
		Collection<String> col = new ArrayList<String>();
		
		col.add("one");
		col.add("two");
		col.add("three");
		
		for(String str : col)
		{
			System.out.println(str);
		}
		
		System.out.println("--------------------------");
		
		List<String> list = new ArrayList<String>();
		
		list.add("a");
		list.add("b");
		list.add("c");
		
		for(int i = 0; i < list.size(); i++)
		{
			System.out.println(list.get(i));
		}
		
		System.out.println("--------------------------");
		
		for(Iterator<String> iter = list.iterator(); iter.hasNext();)
		{
			System.out.println(iter.next());
		}
		
		System.out.println("--------------------------");
		
		for(String str : list)
		{
			System.out.println(str);
		}
	}
}

 

但是增强for循环有些缺点,例如不能在增强循环里动态的删除集合内容。不能获取下标等。
2.ArrayList由于使用数组实现,因此下标明确,最好使用普通循环。
3.而对于LinkedList 由于获取一个元素,要从头开始向后找,因此建议使用增强for循环,也就是iterator。
下面的例子可以证明

package javaaadvcharacteristic;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

/** * 增强for循环用法 *  * @author jiqinlin *  */
public class Main {

    public static void main(String[] args) {
        //List<Integer> list = new ArrayList<Integer>();
        List<Integer> list = new LinkedList<Integer>();
        for (int i = 0; i < 50000; i++) {
            list.add(11);
        }
        int resutl = 0;
        long start = System.currentTimeMillis();
        for (int i = 0; i < list.size(); i++) {
            resutl = list.get(i);
        }
        System.out.println("普通循环使用了" + (System.currentTimeMillis() - start) + "毫秒");
        start = System.currentTimeMillis();
        for (int c2 : list) {
        }
        System.out.println("增强for循环使用了" + (System.currentTimeMillis() - start) + "毫秒");
    }
}

 

使用ArrayList运行结果如下

把ArrayList改为LinkedList,我这里内存溢出了,运行结果如下

于是list改成50000,运行结果如下

所以在使用的时候适当选择就好了 

分享到:
评论

相关推荐

    JDK1.5中增强for循环

    JDK1.5新特性中的最重要的一点。让你彻底明白增强for循环的强大和方便

    Java 高级特性.doc

    2.可变参数与for循环增强 这个是一般的用法: public static void loop(String[] args){ for(int i=0;i;i++) { System.out.println(args[i]); } } 这个是JDK 增加的新特性的用法! public static void loop(int ...

    JAVA jdk1.5的新特性

    1.增强的for循环【foreach{}迭代数组或集合】 格式:for(变量的类型 变量名:集合变量名 ){} 注意:集合变量可以是数组或实现了Iterable接口的集合类 2.静态导入(这样调用一个静态方法的时候就不需要【类名....

    JAVA5新特性介绍.zip

    JDK1.5新特性:自动拆装箱、泛型、增强for循环、静态方法导入、可变参数、枚举

    Java理论与实践:在JDK早期版本中使用Java 5的语言特性

    本文介绍了Java 5中添加的语言特性--泛型、枚举、注释、自动装箱和增强的for循环--不需要修改JVM的指令集,几乎全部是在静态编译器和类库中实现的。对于不能使用Java 5语言特性的开发人员,有多种方法可以使他们使用...

    jdk1.5的新特性

    从增强的for循环到诸如泛型(generic)之类更复杂的特性,都将很快出现在您所编写的代码中。我们刚刚完成了一个基于Java 5.0的大型任务,而本文就是要介绍我们使用这些新特性的体验。本文不是一篇入门性的文章,而是对...

    Java基础知识点总结.docx

    增强for循环 85 可变参数(...) 86 枚举:关键字 enum 86 自动拆装箱 86 泛型 87 &lt;java.lang&gt;System 89 &lt;java.lang&gt;Runtime 90 &lt;java.lang&gt;Math 90 &lt;java.lang&gt;.Date:日期类,月份从0—11 92 &lt;java.lang&gt; Calendar...

    JAVA基础课程讲义

    增强for循环 114 思考作业 114 上机作业 115 第六章 常用类的使用 117 基本数据类型的包装类 117 包装类基本知识 117 包装类的用途 118 自动装箱和拆箱?autoboxing,unboxing 119 字符串相关类(String、 ...

    java基础案例与开发详解案例源码全

    4.5 增强for循环116 4.6 本章练习117 第5章 5.1 面向过程的设计思想120 5.2 面向对象的设计思想120 5.3 抽象121 5.3.1 对象的理解121 5.3.2 Java抽象思想的实现122 5.4 封装124 5.4.1 对象封装的概念理解124 5.4.2 ...

    corejava培训文档

    17.2. 增强的for循环 17.3. 自动装箱和自动拆箱 17.3.1. 在基本数据类型和封装类之间的自动转换 17.4. 类型安全的枚举 17.5. 静态引入 17.6. C风格的格式化输出 17.7. Building Strings(StringBuilder类) 17.8....

    java学习笔记 初学者必读

    17.2. 增强的for循环 17-66 17.3. 自动装箱和自动拆箱 17-69 17.3.1. 在基本数据类型和封装类之间的自动转换 17-69 17.4. 类型安全的枚举 17-70 17.5. 静态引入 17-71 17.6. C风格的格式化输出 17-72 17.7. Building...

    Java典型模块

    3.1.3 增强版for循环 3.1.4 基本数据的拆、装箱操作(autoboxing和unboxing) 3.2 枚举 3.2.1 枚举的实现原理 3.2.2 枚举的简单应用 3.2.3 枚举的高级特性 3.3 反射 3.3.1 反射的基石——Class类 3.3.2 反射的基本...

    java高级编程必须知道的集合详细讲解

    集合框架的迭代和遍历: 解释如何使用迭代器和增强 for 循环来遍历集合中的元素。讲解如何避免在遍历过程中发生并发修改异常。 集合框架的性能和选择: 探讨集合框架中各种实现类的性能比较,讲解如何根据需求选择...

    仿知乎java源码-Java2Cpp-Translator:Java到C++转换器

    仿知乎java源码SevenBobcat-Java2CppTranslator 翻译器支持将受限版本的 Java 翻译成 C++。 源语言是 Java 的受限版本,没有高级功能,如嵌套类、匿名类、接口、枚举、注释、泛型、增强的 for 循环、可变参数、装箱/...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例034 使用for循环输出杨辉三角 43 实例035 使用嵌套循环在控制台上输出 九九乘法表 44 实例036 用while循环计算1+1/2!+1/3!…1/20! 45 实例037 for循环输出空心的菱形 46 实例038 foreach循环优于for循环 47 实例...

Global site tag (gtag.js) - Google Analytics