-
- 参数类型
-
E
- 此迭代器返回的元素的类型
- All Known Subinterfaces:
-
EventIterator
,ListIterator<E>
,PrimitiveIterator<T,T_CONS>
,PrimitiveIterator.OfDouble
,PrimitiveIterator.OfInt
,PrimitiveIterator.OfLong
,XMLEventReader
- 所有已知实现类:
-
BeanContextSupport.BCSIterator
,EventReaderDelegate
,Scanner
public interface Iterator<E>
一个集合的迭代器。Iterator
代替了Java Collections Framework中的Enumeration
。 迭代器有两种不同的枚举方式:- 迭代器允许调用者在迭代期间从底层集合中删除元素,并具有明确定义的语义。
- 方法名称得到改进。
此接口是Java Collections Framework的成员。
- API Note:
-
一个
Enumeration
可以被转换成一个Iterator
通过使用Enumeration.asIterator()
方法。 - 从以下版本开始:
- 1.2
- 另请参见:
-
Collection
,ListIterator
,Iterable
-
-
方法摘要
所有方法 接口方法 抽象方法 Default Methods Modifier and Type 方法 描述 default void
forEachRemaining(Consumer<? super E> action)
对每个剩余元素执行给定的操作,直到所有元素都被处理或动作引发异常。boolean
hasNext()
如果迭代具有更多元素,则返回true
。E
next()
返回迭代中的下一个元素。default void
remove()
从底层集合中删除此迭代器返回的最后一个元素(可选操作)。
-
-
-
方法详细信息
-
hasNext
boolean hasNext()
如果迭代具有更多元素,则返回true
。 (换句话说,如果true将返回一个元素而不是抛出异常,则返回true
)- 结果
-
true
如果迭代有更多的元素
-
next
E next()
返回迭代中的下一个元素。- 结果
- 迭代中的下一个元素
- 异常
-
NoSuchElementException
- 如果迭代没有更多的元素
-
remove
default void remove()
从底层集合中删除此迭代器返回的最后一个元素(可选操作)。 这种方法只能在每次调用next()
时调用一次。如果在迭代正在进行中,除了通过调用此方法之外的任何方式修改底层集合,否则迭代器的行为是未指定的,除非重写类已指定并发修改策略。
如果在调用
forEachRemaining
方法后调用此方法, 则不指定迭代器的行为。- 实现要求:
-
默认实现会抛出一个
UnsupportedOperationException
的实例,并且不执行其他操作。 - 异常
-
UnsupportedOperationException
- 如果此迭代器不支持remove
操作 -
IllegalStateException
- 如果next
方法尚未被调用,或remove
方法在最后一次调用next
方法之后已经被调用
-
forEachRemaining
default void forEachRemaining(Consumer<? super E> action)
对每个剩余元素执行给定的操作,直到所有元素都被处理或动作引发异常。 如果指定了该顺序,则按迭代的顺序执行操作。 动作抛出的异常被转发给呼叫者。如果操作以任何方式修改集合(即使通过调用
remove
方法或Iterator
子类型的其他mutator方法),迭代器的行为也是未指定的,除非重写类已指定并发修改策略。如果动作引发异常,则未指定迭代器的后续行为。
- 实现要求:
-
默认实现的行为如下:
while (hasNext()) action.accept(next());
- 参数
-
action
- 要对每个元素执行的操作 - 异常
-
NullPointerException
- 如果指定的操作为空 - 从以下版本开始:
- 1.8
-
-