迭代器是一个对象,它的工作是遍历并选择序列中的对象,而客户端程序员不必知道或关心该序列底层的结构。此外,迭代器通常被称为轻量级对象 :创建它的代价小。因此,经常可以见到对迭代器有些奇怪的限制;例如,Java的Iterator只能单向移动,这个Iterator只能用来:

    1. 使用方法iterator()要求容器返回一个IteratorIterator将准备好返回序列的第一个元素。
    2. 使用next()获得序列中的下一个元素。
    3. 使用hasNext()检查序列中是否还有元素。
    4. 使用remove()将迭代器新近返回的元素删除。

    Iterator还可以移除由next()产生的最后一个元素,这意味着在调用remove()之前必须先调用next()
    如果到达了集合的末尾,next 方法将抛出一个NoSuchElementException。因此,需要在调用next 之前调用hasNext() 方法。

    应该将Java 迭代器认为是位于两个元素之间。当调用next 时,迭代器就越过下一个元素,并返回刚刚越过的那个元素引用。

    Iterator - 图1