话题8 基本for循环与加强型for循环

原创 2015年11月21日 17:10:20

1 加强型for循环概述

         从 JDK 1.5起,增加了加强型for循环的用法,加强型for循环在操作数组和集合方面有很大方便性。虽然加强型for循环有很大便利性,但是加强型for循环也有一定局限性。表现在如下几个方面:

       (1)只能对数组元素进行顺序访问。

       (2)只能访问集合中的所有元素。

        (3)循环中没有当前索引,因此无法对指定元素进行操作。

2 加强型for循环的处理(实现)

        加强型for循环只是在基本for循环的基础上做了一层简单的包装而已,其底层也是通过基本for循环来实现的。
如下:
package chapter1;

import java.util.HashSet;
import java.util.Set;

import org.omg.PortableServer.ID_ASSIGNMENT_POLICY_ID;

public class MysSet<E> {

	private Set<E> ids = new HashSet<E>();

	public void addIds(E id) {
		ids.add(id);
	}

	public boolean removeId(E id) {
		return ids.remove(id);
	}

	public static void main(String[] args) {
		MysSet<String> set = new MysSet<String>();
		set.addIds("9011");
		set.addIds("9022");
		set.addIds("9033");
		for (String str : set) {
			System.out.println(str);
		}
	}

}

这是一个自定义集合,代码中for循环会出现错误,从而得知,加强型for循环要求右侧的变量为string和iterable型,而我们声明的MySet并不是iterable型。那怎样才能让他成为iterable型呢。实现接口iterable即可。下面是改进后的程序:
package chapter1;

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

public class MysSet<E> implements Iterable<E> {

	private Set<E> ids = new HashSet<E>();

	public void addIds(E id) {
		ids.add(id);
	}

	public boolean removeId(E id) {
		return ids.remove(id);
	}

	public Iterator<E> iterator() {
		return ids.iterator();
	}

	public static void main(String[] args) {
		MysSet<String> set = new MysSet<String>();
		set.addIds("9011");
		set.addIds("9022");
		set.addIds("9033");
		for (String str : set) {
			System.out.println(str);
		}
	}

}

程序运行结果
9011
9022
9033

小结:如果加强型for循环处理的不是数组类型,那么会转换为去调用加强型for循环右侧变量的iterator()方法,而该方法是在iterable中声明的,因此右侧的变量必须是数组类型或者iterable类型。从处理方式上来看,加强型for循环在处理集合类(确切说是iterable类型的元素时),底层也是基本型for循环实现的。

3加强型for循环总结


(1) 加强型for循环的右侧的变量(即冒号后面的集合)必须为数组类型或者iterable类型。
(2)   底层是依赖基本型for循环来实现的。

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/qq_16811963/article/details/49966001

ASP.NET MVC5 实战(arcgis项目)

-
  • 1970年01月01日 08:00

Java中增强型for循环的样例和解释

JDK1.5加入的增强for和循环.语法是:for(ElementType element:arrayName){};举个例子:(1)    int[] numArray = { 1, 2, 3, 4...
  • java2000_net
  • java2000_net
  • 2008-09-13 06:17:00
  • 24965

增强for循环不止是语法上的优雅

简单讲就是不同的数据结构存储方式不一样,需采用不同的算法,而增强for循环则解决了这个问题,避免我们简单粗暴的去遍历集合。...
  • xiaoge11
  • xiaoge11
  • 2016-08-24 22:44:51
  • 4007

加强型for循环

JDK1.5加入的增强for和循环.  语法是: for(ElementType element:arrayName){}; 举个例子:(1)   ...
  • fang323619
  • fang323619
  • 2015-01-26 10:44:49
  • 1336

增强for循环和普通for循环的区别

此处引用 ----------- 1.增强for循环和iterator遍历的效果是一样的,也就说 增强for循环的内部也就是调用iteratoer实现的(可以查看编译后的文件),但是增强for循环...
  • yinzhuo1
  • yinzhuo1
  • 2012-02-28 15:27:15
  • 33128

增强for循环

jdk1.5出现的新特性---->增强for循环 增强for循环的作用: 简化迭代器的书写格式。(注意:增强for循环的底层还是使用了迭代器遍历。) 增强for循环的适用范围: 如果是实现了Ite...
  • CSDN_GIA
  • CSDN_GIA
  • 2016-11-13 15:39:41
  • 16193

话题8 基本for循环与加强型for循环

1 加强型for循环概述          从 JDK 1.5起,增加了加强型for循环的用法,加强型for循环在操作数组和集合方面有很大方便性。虽然加强型for循环有很大便利性,但是加强型for循环...
  • qq_16811963
  • qq_16811963
  • 2015-11-21 17:10:20
  • 504

java中的增强型for循环

//增强for循环 public class ForArray {         public static void main(String[] args)         {     ...
  • JUNE_Lion
  • JUNE_Lion
  • 2015-12-06 15:58:14
  • 152

增强for循环用法

增强for循环用法 1.首先增强for循环和iterator遍历的效果是一样的,也就说增强for循环的内部也就是调用iteratoer实现的, 但是增强for循环有些缺点,例如不能在增强循环里...
  • zolalad
  • zolalad
  • 2014-06-08 19:33:38
  • 2391

增强for循环的使用

最近在工作中发现增强for循环对集合的操作很方便 下面是增强for循环的用法: 1.增强for循环和iterator遍历的效果是一样的,也就说 增强for循环的内部也就是调用iteratoer实现...
  • tanyunlong_nice
  • tanyunlong_nice
  • 2015-12-08 23:06:52
  • 1200
收藏助手
不良信息举报
您举报文章:话题8 基本for循环与加强型for循环
举报原因:
原因补充:

(最多只允许输入30个字)