- 类型参数:
-
E- 迭代器返回的元素类型
- 所有已知的子接口:
-
EventIterator,ListIterator<E>,PrimitiveIterator<T,,T_CONS> PrimitiveIterator.OfDouble,PrimitiveIterator.OfInt,PrimitiveIterator.OfLong,XMLEventReader
- 所有已知的实现类:
-
BeanContextSupport.BCSIterator,EventReaderDelegate,Scanner
public interface Iterator<E>
一个集合的迭代器。
Iterator 在Java集合框架中取代了 Enumeration。迭代器与枚举有两点不同:
- 迭代器允许调用者在迭代过程中从底层集合中删除元素,并具有明确定义的语义。
- 方法名称已经改进。
此接口是 Java集合框架 的成员。
- API 注意:
-
可以使用
Enumeration.asIterator()方法将Enumeration转换为Iterator。 - 自 JDK 版本:
- 1.2
- 参见:
-
Method Summary
-
Method Details
-
hasNext
boolean hasNext()- 返回:
-
如果迭代还有更多元素,则返回
true
-
next
E next()返回迭代中的下一个元素。- 返回:
- 迭代中的下一个元素
- 抛出:
-
NoSuchElementException- 如果迭代没有更多元素
-
remove
default void remove()从底层集合中删除此迭代器返回的最后一个元素(可选操作)。每次调用next()仅能调用此方法一次。如果在迭代进行中以除调用此方法外的任何方式修改底层集合,则迭代器的行为是未指定的,除非覆盖类已指定并发修改策略。
如果在调用
forEachRemaining方法后调用此方法,则迭代器的行为是未指定的。- 实现要求:
-
默认实现会抛出
UnsupportedOperationException的实例,并不执行其他操作。 - 抛出:
-
UnsupportedOperationException- 如果此迭代器不支持remove操作 -
IllegalStateException- 如果尚未调用next方法,或者在最后一次调用next方法后已经调用remove方法
-
forEachRemaining
对剩余的每个元素执行给定的操作,直到所有元素都已处理或操作引发异常。如果指定了顺序,则按迭代顺序执行操作。操作引发的异常将传递给调用者。如果操作以任何方式修改集合(甚至通过调用
remove方法或其他Iterator子类型的修改器方法),则迭代器的行为是未指定的,除非覆盖类已指定并发修改策略。如果操作引发异常,则迭代器的后续行为是未指定的。
- 实现要求:
-
默认实现的行为如下:
while (hasNext()) action.accept(next()); - 参数:
-
action- 要对每个元素执行的操作 - 抛出:
-
NullPointerException- 如果指定的操作为 null - 自 JDK 版本:
- 1.8
-