迭代器Iterator 通过调用集合对象的iterator()方法来实现,下面以ArrayList类为例介绍其具体实现原理: 在JDK1.5之后,单列集合的统一父类Collection继承了Iterable接口, Iterable{}接口和Collection{}接口都有抽象iterator()方法。
Collection的实现类如ArrayList、LinkedList等都重写了Iterable接口中的iterator方法。
Iterator it = (new ArrayList()).iterator(); // 这里利用了多态,iterator()方法返回的是Iterator接口的实现类对象
ArrayList类中的iterator()源码如下:
* public Iterator<E> iterator() {
* return new Itr();
* 返回一个Iterator接口的实现类对象
Itr作为Iterator的实现类,其源码如下:
* private class Itr implements Iterator<E>{
* 1. 构造方法
* Itr()
* 2. hasNext方法
* public boolean hasNext(){}
* 3. next方法
* public E next() {}
* 4. romove方法
* public void remove()
通过返回的Itr对象,来调用其hasnext()和next()方法,实现迭代的功能。
|
|