码迷,mamicode.com
首页 > 其他好文 > 详细

JDK5新特性--forEach循环

时间:2016-10-17 00:52:29      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:jdk5新特性--foreach循环

1.增强for循环概述

  简化数组和Collection集合的遍历


2.格式

for(元素数据类型 变量:数组或者Collection集合){
    使用变量集合,该变量就是元素
}
package cn;

public class ForDemo {
	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(int i : arr){
			System.out.println(i);
		}
	}

}
package cn;

public class ForDemo2 {
	public static void main(String[] args) {
		String[] strs = new String[]{"观音姐姐","如来叔叔","玉帝哥哥","悟空第第"};
		
		for(String str :strs){
			System.out.println(str);
		}
	}

}
package cn;

import java.util.ArrayList;

public class ArrayListDemo {
	public static void main(String[] args) {
		ArrayList<String> list = new ArrayList<String>();
		
		list.add("哈哈");
		list.add("呵呵");
		list.add("嘻嘻");
		list.add("笨笨");
		
		for(String str :list){
			System.out.println(str);
		}
	}

}


3.增强for循环的好处:简化了数组和集合的遍历。


4.注意事项:增强for的目标要判断是否为null

判断目标为空的代码

package cn;

import java.util.ArrayList;

public class ArrayListDemo {
	public static void main(String[] args) {
		ArrayList<String> list = new ArrayList<String>();
		
		list.add("哈哈");
		list.add("呵呵");
		list.add("嘻嘻");
		list.add("笨笨");
		
		list = null;
		
		for(String str :list){
			System.out.println(str);
		}
	}

}

Exception in thread "main" java.lang.NullPointerException

at cn.ArrayListDemo.main(ArrayListDemo.java:16)

所以为了避免这种错误,请你使用增强for循环的时候还是先判断目标吧。

package cn;

import java.util.ArrayList;

public class ArrayListDemo {
	public static void main(String[] args) {
		ArrayList<String> list = new ArrayList<String>();
		
		list.add("哈哈");
		list.add("呵呵");
		list.add("嘻嘻");
		list.add("笨笨");
		
		if(null != list){
			for(String str :list){
				System.out.println(str);
			}
		}
		
		
	}

}


5.forEach循环其实底层就是迭代器

哈哈,不信,看下面代码

package cn;

import java.util.ArrayList;

public class ArrayListDemo {
	public static void main(String[] args) {
		ArrayList<String> list = new ArrayList<String>();
		
		list.add("哈哈");
		list.add("呵呵");
		list.add("嘻嘻");
		list.add("笨笨");
		
		if(null != list){
			for(String str :list){
				if(str.equals("呵呵")){
					list.add("哦哦");
				}
				System.out.println(str);
			}
		}
		
		
	}

}

Exception in thread "main" 哈哈

呵呵

java.util.ConcurrentModificationException

at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901)

at java.util.ArrayList$Itr.next(ArrayList.java:851)

at cn.ArrayListDemo.main(ArrayListDemo.java:15)

这个异常是不是很熟悉,哈哈,就是迭代器迭代集合时修改集合的元素时出现的异常。



本文出自 “11831428” 博客,请务必保留此出处http://11841428.blog.51cto.com/11831428/1862374

JDK5新特性--forEach循环

标签:jdk5新特性--foreach循环

原文地址:http://11841428.blog.51cto.com/11831428/1862374

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!