- 类型参数:
-
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
-