foreach实现原理

在平时Java程序中,应用比较多的就是对Collection集合类的foreach遍历,foreach之所以能工作,是因为这些集合类都实现了Iterable接口,该接口中定义了Iterator迭代器的产生方法,并且foreach就是通过Iterable接口在序列中进行移动。

Iterable接口API:

package java.lang;

import java.util.Iterator;

public interface Iterable
{

    public abstract Iterator iterator();
}

该接口中定义了产生Iterator迭代器的方法;

package java.util;


public interface Iterator
{

    public abstract boolean hasNext();

    public abstract Object next();

    public abstract void remove();
}

新形式的遍历虽然好用,但是他丢掉了索引信息。当你需要访问数组或者集合的下标,你将不能使用foreach

从JDK的第五个版本开始加入了这个foreach功能,但是java语言对于它的实现做了隐藏,他是隐藏在语言内部的

foreach循环的几个特性
1.foreach遍历不能对元素进行赋值操作
2.同时只能遍历一个
3.遍历的时候,只有当前被遍历的元素可见,其他不可见
4.只能正向遍历,不能反向
5.foreach对ArrayList的遍历是因为其实现了Iterable接口
6.对于数组,就是转化为对数组中的每一个元素的循环引用

猜你喜欢

转载自blog.csdn.net/qq_32337109/article/details/80206159