- 类型参数:
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
。 - 自从:
- 1.2
- 参见:
-
方法总结
-
方法详情
-
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
- 如果指定的操作为空- 自从:
- 1.8
-