Module java.base
Package java.util

Interface ListIterator<E>

类型参数:
E - 此列表迭代器返回的元素类型
所有超接口:
Iterator<E>

public interface ListIterator<E> extends Iterator<E>
一个允许程序员在列表中向前或向后遍历的迭代器,可以在迭代期间修改列表,并获取迭代器在列表中的当前位置。 ListIterator 没有当前元素;它的光标位置始终位于通过调用 previous() 返回的元素和通过调用 next() 返回的元素之间。长度为 n 的列表的迭代器具有 n+1 个可能的光标位置,如下所示:
                      元素(0)   元素(1)   元素(2)   ... 元素(n-1)
 光标位置:  ^            ^            ^            ^                  ^
 
请注意,remove()set(Object) 方法并非根据光标位置定义;它们被定义为操作最后通过调用 next()previous() 返回的元素。

此接口是 Java集合框架 的成员。

自版本:
1.2
另请参阅:
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    add(E e)
    将指定的元素插入列表中(可选操作)。
    boolean
    在向前遍历列表时,如果此列表迭代器有更多元素,则返回 true
    boolean
    在向后遍历列表时,如果此列表迭代器有更多元素,则返回 true
    E
    next()
    返回列表中的下一个元素并移动光标位置。
    int
    返回将由后续调用 next() 返回的元素的索引。
    E
    返回列表中的上一个元素并向后移动光标位置。
    int
    返回将由后续调用 previous() 返回的元素的索引。
    void
    remove()
    从列表中删除上次由 next()previous() 返回的最后一个元素(可选操作)。
    void
    set(E e)
    用指定的元素替换上次由 next()previous() 返回的最后一个元素(可选操作)。

    Methods declared in interface java.util.Iterator

    forEachRemaining
  • Method Details

    • hasNext

      boolean hasNext()
      在向前遍历列表时,如果此列表迭代器有更多元素,则返回 true。 (换句话说,如果 next() 将返回一个元素而不是抛出异常,则返回 true。)
      指定者:
      hasNext 在接口 Iterator<E>
      返回:
      如果向前遍历列表时此列表迭代器有更多元素,则返回 true
    • next

      E next()
      返回列表中的下一个元素并移动光标位置。可以重复调用此方法来遍历列表,或与调用 previous() 交替以前后移动。(请注意,交替调用 nextprevious 将重复返回相同的元素。)
      指定者:
      next 在接口 Iterator<E>
      返回:
      列表中的下一个元素
      抛出:
      NoSuchElementException - 如果迭代没有下一个元素
    • hasPrevious

      boolean hasPrevious()
      在向后遍历列表时,如果此列表迭代器有更多元素,则返回 true。 (换句话说,如果 previous() 将返回一个元素而不是抛出异常,则返回 true。)
      返回:
      如果向后遍历列表时此列表迭代器有更多元素,则返回 true
    • previous

      E previous()
      返回列表中的上一个元素并向后移动光标位置。可以重复调用此方法来向后遍历列表,或与调用 next() 交替以前后移动。(请注意,交替调用 nextprevious 将重复返回相同的元素。)
      返回:
      列表中的上一个元素
      抛出:
      NoSuchElementException - 如果迭代没有上一个元素
    • nextIndex

      int nextIndex()
      返回将由后续调用 next() 返回的元素的索引。 (如果列表迭代器位于列表末尾,则返回列表大小。)
      返回:
      将由后续调用 next 返回的元素的索引,如果列表迭代器位于列表末尾,则返回列表大小
    • previousIndex

      int previousIndex()
      返回将由后续调用 previous() 返回的元素的索引。 (如果列表迭代器位于列表开头,则返回 -1。)
      返回:
      将由后续调用 previous 返回的元素的索引,如果列表迭代器位于列表开头,则返回 -1
    • remove

      void remove()
      从列表中删除上次由 next()previous() 返回的最后一个元素(可选操作)。每次调用 nextprevious 仅能调用一次此操作。仅当在上次调用 nextprevious 后未调用 add(E) 时才能调用此操作。
      指定者:
      remove 在接口 Iterator<E>
      抛出:
      UnsupportedOperationException - 如果此列表迭代器不支持 remove 操作
      IllegalStateException - 如果既未调用 next 也未调用 previous,或在上次调用 nextprevious 后调用了 removeadd
    • set

      void set(E e)
      用指定的元素替换上次由 next()previous() 返回的最后一个元素(可选操作)。仅当在上次调用 nextprevious 后未调用 remove()add(E) 时才能调用此操作。
      参数:
      e - 用于替换上次由 nextprevious 返回的最后一个元素的元素
      抛出:
      UnsupportedOperationException - 如果此列表迭代器不支持 set 操作
      ClassCastException - 如果指定元素的类阻止将其添加到此列表
      IllegalArgumentException - 如果指定元素的某些方面阻止将其添加到此列表
      IllegalStateException - 如果既未调用 next 也未调用 previous,或在上次调用 nextprevious 后调用了 removeadd
    • add

      void add(E e)
      将指定的元素插入列表中(可选操作)。如果有的话,该元素将插入到将由 next() 返回的元素之前,并在将由 previous() 返回的元素之后。 (如果列表不包含元素,则新元素将成为列表上的唯一元素。)新元素将插入到隐式光标之前:后续调用 next 不受影响,后续调用 previous 将返回新元素。 (此调用将增加调用 nextIndexpreviousIndex 时返回的值。)
      参数:
      e - 要插入的元素
      抛出:
      UnsupportedOperationException - 如果此列表迭代器不支持 add 方法
      ClassCastException - 如果指定元素的类阻止将其添加到此列表
      IllegalArgumentException - 如果此元素的某些方面阻止将其添加到此列表