Module java.base
Package java.util

Interface 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
自 JDK 版本:
1.2
参见:
  • Method Summary

    Modifier and Type
    Method
    Description
    default void
    forEachRemaining(Consumer<? super E> action)
    对剩余的每个元素执行给定的操作,直到所有元素都已处理或操作引发异常。
    boolean
    如果迭代还有更多元素,则返回 true
    E
    next()
    返回迭代中的下一个元素。
    default void
    remove()
    从底层集合中删除此迭代器返回的最后一个元素(可选操作)。
  • Method Details

    • 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 - 如果指定的操作为 null
      自 JDK 版本:
      1.8