Module  java.base
软件包  java.util

Interface ListIterator<E>

  • All Superinterfaces:
    Iterator<E>


    public interface ListIterator<E>
    extends Iterator<E>
    用于允许程序员沿任一方向遍历列表的列表的迭代器,在迭代期间修改列表,并获取列表中迭代器的当前位置。 A ListIterator没有电流元素; 它的光标位置总是位于通过调用previous()返回的元素和通过调用next()返回的元素next() 长度为n的列表的迭代器具有n+1可能的光标位置,如下图所示的插图^^ )所示:
      Element(0)   Element(1)   Element(2)   ... Element(n-1)
     cursor positions:  ^            ^            ^            ^                  ^ 
    请注意, remove()set(Object)方法未按光标位置进行定义; 它们被定义为对通过调用next()previous()返回的最后一个元素进行操作。

    此接口是Java Collections Framework的成员。

    从以下版本开始:
    1.2
    另请参见:
    CollectionListIteratorEnumerationList.listIterator()
    • 方法摘要

      所有方法  接口方法  抽象方法 
      Modifier and Type 方法 描述
      void add​(E e)
      将指定的元素插入列表(可选操作)。
      boolean hasNext​()
      如果此列表迭代器在向前方向遍历列表时具有更多元素,则返回 true
      boolean hasPrevious​()
      如果此列表迭代器在相反方向遍历列表时具有更多元素,则返回 true
      E next​()
      返回列表中的下一个元素,并且前进光标位置。
      int nextIndex​()
      返回由后续调用返回的元素的索引 next()
      E previous​()
      返回列表中的上一个元素,并向后移动光标位置。
      int previousIndex​()
      返回由后续调用返回的元素的索引 previous()
      void remove​()
      从列表中删除 next()previous() (可选操作)返回的最后一个元素。
      void set​(E e)
      用指定的元素(可选操作)替换 next()previous()返回的最后一个元素。
    • 方法详细信息

      • hasNext

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

        E next​()
        返回列表中的下一个元素,并且前进光标位置。 这种方法可以重复调用来遍历列表,或者与调用previous()进行混合来回。 (请注意,对nextprevious交替调用将重复返回相同的元素。)
        Specified by:
        next在接口 Iterator<E>
        结果
        列表中的下一个元素
        异常
        NoSuchElementException - 如果迭代没有下一个元素
      • hasPrevious

        boolean hasPrevious​()
        如果此列表迭代器在相反方向遍历列表时具有更多元素,则返回true (换句话说,如果true返回一个元素而不是抛出异常,则返回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 它可制成只有add(E)尚未到最后通话后称为next或者previous
        Specified by:
        remove在接口 Iterator<E>
        异常
        UnsupportedOperationException - 如果此列表迭代器不支持 remove操作
        IllegalStateException - 如果 nextprevious都不被调用,或者 removeadd在最后一次调用后被调用到 nextprevious
      • set

        void set​(E e)
        用指定的元素替换由next()previous()返回的最后一个元素(可选操作)。 只有在最后一次拨打nextprevious之后既不调用remove()也不add(E)此呼叫可以进行。
        参数
        e - 用于替换 nextprevious返回的最后一个元素的元素
        异常
        UnsupportedOperationException - 如果 set操作不支持此列表迭代器
        ClassCastException - 如果指定元素的类阻止将其添加到此列表中
        IllegalArgumentException - 如果指定元素的某些方面阻止将其添加到此列表中
        IllegalStateException - 如果 nextprevious被调用,或者 removeadd在最后一次通话后被调用到 nextprevious
      • add

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