-
- 参数类型
-
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 变量和类型 方法 描述 default void
forEachRemaining(Consumer<? super E> action)
对每个剩余元素执行给定操作,直到处理完所有元素或操作引发异常。boolean
hasNext()
如果迭代具有更多元素,则返回true
。E
next()
返回迭代中的下一个元素。default void
remove()
从底层集合中移除此迭代器返回的最后一个元素(可选操作)。
-
-
-
方法详细信息
-
hasNext
boolean hasNext()
如果迭代具有更多元素,则返回true
。 (换句话说,如果next()
返回一个元素而不是抛出异常,则返回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
- 如果指定的操作为null - 从以下版本开始:
- 1.8
-
-