Java JDK7源码-java.util.Iterator<E>

源码

1
package java.util;
2
3
import java.util.NoSuchElementException;
4
5
public interface Iterator<E> {
6
7
    /**
8
     * 若集合还有元素则返回true,反之返回false。
9
     * 更清晰的表述为:若iterator游标当前所指向的位置还有元素则返回true,反之返回false。
10
     * 若在本方法返回false时继续调用next()方法,则next()方法会抛出异常。
11
     */
12
    boolean hasNext();
13
14
    /**
15
     * 返回iterator游标当前所指向的元素,随后游标后移一位。
16
     * 
17
     * @throws NoSuchElementException iterator游标当前所指向的位置已无元素
18
     */
19
    E next();
20
21
    /**
22
     * 本方法可选,实现类可依自身情况决定是否真的需要实现。
23
     * 
24
     * 移除iterator游标当前所指元素的前一个元素。即上一次调用next()方法所返回的元素。
25
     * 因此,调用本方法之前必须调用一次next()方法。
26
     * 调用一次next()方法后多次调用本方法是不允许的。本方法必须与next()方法一一配对。
27
     * 
28
     * 这么设计是符合逻辑的,因为我们一般只有先用next()方法得到元素后,才能知道该元素是否需要被移除。
29
     * 因此移除的是游标的前一个元素,而非当前游标正指向的这个我们不知道的元素。
30
     * 
31
     * @throws UnsupportedOperationException 实现类未实现本方法。
32
     * @throws IllegalStateException 本方法未与next()方法一一配对。
33
     */
34
    void remove();
35
}

已整理层级关系

直接子接口

直接实现本接口的内部类

综述

本接口是Java集合框架中的一员,用于迭代集合中的元素。Iterator<E>中的E代表该迭代器(iterator)返回的元素类型。

Enumeration接口诞生于JDK1.0,而Iterator接口诞生于JDK1.2,是替代Enumeration的改进版本:即二者实现的功能相同,因此在日常开发中更推荐使用Iterator。Iterator与Enumeration的不同之处可归纳为如下两点:

  • 在迭代过程中,Iterator允许删除集合中的元素,而Enumeration则不能
  • Iterator使用更为精简易读的方法名

未整理层级关系

直接子接口

直接实现本接口的类

直接实现本接口的非public类

直接实现本接口的内部类