迭代器是一个对象,它的工作是遍历并选择序列中的对象,而客户端程序员不必知道或关心该序列底层的结构。此外,迭代器通常被称为轻量级对象 :创建它的代价小。因此,经常可以见到对迭代器有些奇怪的限制;例如,Java的Iterator只能单向移动,这个Iterator只能用来:
- 使用方法iterator()要求容器返回一个Iterator。Iterator将准备好返回序列的第一个元素。
- 使用next()获得序列中的下一个元素。
- 使用hasNext()检查序列中是否还有元素。
- 使用remove()将迭代器新近返回的元素删除。
Iterator还可以移除由next()产生的最后一个元素,这意味着在调用remove()之前必须先调用next() 。
如果到达了集合的末尾,next 方法将抛出一个NoSuchElementException。因此,需要在调用next 之前调用hasNext() 方法。
应该将Java 迭代器认为是位于两个元素之间。当调用next 时,迭代器就越过下一个元素,并返回刚刚越过的那个元素引用。