黑马程序员技术交流社区
标题:
增强for循环的内幕
[打印本页]
作者:
pizhihui
时间:
2015-6-13 20:31
标题:
增强for循环的内幕
在学集合的时候,我们可以使用迭代器去遍历集合,即访问集合中所有的元素,但是使用增强for循环也可以实现集合的遍历功能,我们探究一下这个增强for,总的来说:增强for循环内部也是使用迭代器实现的,但是他是怎么实现的了,这里我们举Collection的例子来看看源码是怎么告诉我们的。
先是Collection的部分源代码
//Collection 层次结构 中的根接口
public interface Collection<E> extends Iterable<E> {
int size();
boolean isEmpty();
boolean contains(Object o);
Iterator<E> iterator();//返回在此 collection 的元素上进行迭代的迭代器
Object[] toArray();
boolean add(E e);
boolean remove(Object o);
boolean containsAll(Collection<?> c);
void clear();
boolean equals(Object o);
int hashCode();
}
复制代码
这里我们可以看出Collection接口继承了Iterable,接着我们跟踪Iterable,源代码如下
public interface Iterable<T> {。
Iterator<T> iterator();//返回一个在一组 T 类型的元素上进行迭代的迭代器。
}
复制代码
发现里面什么都没有,只有一个Iterator类型的iterator的方法,我们查看API文档,可以看到这个Iterable的描述是:实现这个接口允许对象成为 "foreach" 语句的目标。这里我们可以看出,增强for循环在这里Java帮我们实现了,接着我们可以看看Iterator类的代码。
//对 collection 进行迭代的迭代器。
public interface Iterator<E> {
boolean hasNext();//如果仍有元素可以迭代,则返回 true
E next();//返回迭代的下一个元素。
void remove();//从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。
}
复制代码
这里我们就可以看出迭代器使用的一些方法了。
最终我们知道了增强for循环在Iterable类中,Java底层帮我们实现了增强for循环的底层功能。
作者:
十五号的人生
时间:
2015-6-13 21:32
学习了~~~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2