有关增强型for循环的使用(详细)

JDK1.5引进了一种新的循环类型,即增强型for循环,可用于数组和集合

基本格式语法如下:

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

其中type为arrays的类型(例如String,int,double,float),element是被声明的新的局部变量,对应的是数组或集合中的每个元素值。arrays即是要访问的数组名。

增强for循环使用注意事项:

1、增强型for循环底层是使用了迭代器iterator获取的,不过获取迭代器由Java虚拟机完成,不需要我们获取迭代器,所以使用增强型for循环变量元素的过程中,不准使用集合对象对集合元素个数进行修改。

2、迭代器iterator遍历元素与增强型for变量元素区别:使用迭代器iterator遍历集合元素时可以删除集合的元素,但是增强型for循环遍历集合元素时,不能调用迭代器的remove()方法删除对应下标元素。

3、普通for循环和加强型for循环差别:普通for循环可以没有遍历目标,但加强型for循环必须要有遍历目标。

下面我们看看几个例子:

  • 案例1(加强型循环的简单使用):

package com.znzz.JavaTest;

public class ForEachCycling {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int count=-1;
		String[] arrays= {"Peter","Zack","Lisa","Lily"}; 
		for(String element : arrays) {
			count++;
			System.out.println("下标"+count+"对应的是"+element);
		}
	}
}

对应的结果如下:

下标0对应的是Peter
下标1对应的是Zack
下标2对应的是Lisa
下标3对应的是Lily

  • 案例2(普通for循环与加强型for循环的对比):

package com.znzz.JavaTest;

public class ForEachCycling {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] arrays= {1,2,3,4,5,6};
		
		//普通for循环遍历
		for(int element=0;element<arrays.length;element++) {
			System.out.print(arrays[element]+"\t");
		}
		System.out.println("\n");
		//加强型for循环遍历
		for(int element:arrays) {
			System.out.print(element+"\t");
		}
	}
}

结果如下:

1    2    3    4    5    6    

1    2    3    4    5    6

  • 案例3(迭代器遍历和加强for循环比较):

package com.znzz.JavaTest;

import java.util.HashSet;
import java.util.Iterator;

public class DemoTest {

	public static void main(String[] args) {
		
		HashSet<String> set= new HashSet<String>();		
		//为集合添加元素
		set.add("Zack");
		set.add("Peter");
		set.add("老刘");
		set.add("老张");
		
		int count=0;
		//调用迭代器iterator遍历Set的集合
		Iterator<String> i=set.iterator();
		//判断集合中是否有值
		while(i.hasNext()) {
			count++;
			String element=i.next();
			System.out.println("element_"+count+"是"+element);
			i.remove();//每输出一个元素之后就remove掉该元素,于是后面的增强型循环无法输出值。只有将此语句注释掉,后面的增强for循环才可行
		}
		System.out.println("----------------------");
		//采用增强型for循环遍历
		for(String element:set) {
			System.out.println("element_"+count+"是"+element);
		}
	}

}

结果如下:

element_1是老张
element_2是Zack
element_3是老刘
element_4是Peter
----------------------

Attention:

由于Map接口没有实现Iterator接口,所以Map集合不能直接使用增强型for循环。如果需要使用到for循环,则必须借助Collection的集合。

package com.znzz.JavaTest;

import java.util.HashMap;
import java.util.Map.Entry;
import java.util.Set;

public class DemoTest {

	public static void main(String[] args) {
		HashMap<Integer,String> map=new HashMap<Integer,String>();
		map.put(0, "刘同学");
		map.put(1, "王同学");
		map.put(2, "张同学");
		map.put(3, "赵同学");
		
		Set<Entry<Integer,String>> e= map.entrySet();
		for(Entry<Integer,String> element:e) {
			System.out.println("键:"+element.getKey()+" "+"值:"+element.getValue());
		}
	}
}

运行结果如下:

键:0 值:刘同学
键:1 值:王同学
键:2 值:张同学
键:3 值:赵同学

此内容结束!

猜你喜欢

转载自blog.csdn.net/qq_47610562/article/details/113072417