模块 java.base
 java.util

接口 Iterator<E>

类型参数:
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
参见:
  • 方法总结

    修饰符和类型
    方法
    描述
    default void
    forEachRemaining(Consumer<? super E> action)
    对每个剩余元素执行给定的操作,直到处理完所有元素或操作引发异常。
    boolean
    如果迭代有更多元素,则返回 true
    E
    next()
    返回迭代中的下一个元素。
    default void
    从基础集合中移除此迭代器返回的最后一个元素(可选操作)。
  • 方法详情

    • hasNext

      boolean hasNext()
      如果迭代有更多元素,则返回 true。 (换句话说,如果 next() 将返回一个元素而不是抛出异常,则返回 true。)
      返回:
      true 如果迭代有更多元素
    • next

      E  next()
      返回迭代中的下一个元素。
      返回:
      迭代中的下一个元素
      抛出:
      NoSuchElementException - 如果迭代没有更多元素
    • remove

      default void remove()
      从基础集合中移除此迭代器返回的最后一个元素(可选操作)。每次调用 next() 只能调用一次此方法。

      在迭代过程中以除调用此方法之外的任何方式修改了基础集合,则迭代器的行为是未指定的,除非重写类已指定并发修改策略。

      如果在调用 forEachRemaining 方法之后调用此方法,则迭代器的行为未指定。

      实现要求:
      默认实现抛出一个 UnsupportedOperationException 实例并且不执行任何其他操作。
      抛出:
      UnsupportedOperationException - 如果此迭代器不支持 remove 操作
      IllegalStateException - 如果尚未调用 next 方法,或者在上次调用 next 方法后已经调用了 remove 方法
    • forEachRemaining

      default void forEachRemaining(Consumer <? super E > action)
      对每个剩余元素执行给定的操作,直到处理完所有元素或操作引发异常。如果指定了迭代顺序,则将按迭代顺序执行操作。操作抛出的异常被转发给调用者。

      如果操作以任何方式修改集合(即使通过调用 remove 方法或 Iterator 子类型的其他增变器方法),则迭代器的行为是未指定的,除非重写类已指定并发修改策略。

      如果操作抛出异常,迭代器的后续行为是未指定的。

      实现要求:

      默认实现的行为就像:

      
         while (hasNext())
           action.accept(next());
        
      参数:
      action - 对每个元素执行的操作
      抛出:
      NullPointerException - 如果指定的操作为空
      自从:
      1.8