Module  java.base
软件包  java.util

Class AbstractSequentialList<E>

  • All Implemented Interfaces:
    Iterable<E>Collection<E>List<E>
    已知直接子类:
    LinkedList


    public abstract class AbstractSequentialList<E>
    extends AbstractList<E>
    该类提供了List接口的骨架实现,以最小化实现由“顺序访问”数据存储(如链表)支持的此接口所需的工作量。 对于随机访问数据(如数组),应使用AbstractList优先于此类。

    这个类是相反AbstractList在某种意义上类,它实现了“随机访问”方法( get(int index)set(int index, E element)add(int index, E element)remove(int index)上列表的列表迭代器的顶部),而不是周围的其他方法。

    为了实现一个列表,程序员只需要扩展这个类并提供listIteratorsize方法的实现。 对于一个不可修改的列表,程序员只需要实现列表迭代器的hasNextnexthasPreviouspreviousindex方法。

    对于可修改的列表,程序员应该另外实现列表迭代器的set方法。 对于可变大小的列表,程序员还应该实现列表迭代器的removeadd方法。

    根据Collection接口规范中的建议,程序员通常应该提供一个void(无参数)和集合构造函数。

    这个类是Java Collections Framework的成员。

    从以下版本开始:
    1.2
    另请参见:
    CollectionListAbstractListAbstractCollection
    • 构造方法详细信息

      • AbstractSequentialList

        protected AbstractSequentialList​()
        唯一的构造函数。 (用于子类构造函数的调用,通常是隐式的。)
    • 方法详细信息

      • get

        public E get​(int index)
        返回此列表中指定位置的元素。

        此实现首先获取指向索引元素的列表迭代器(具有listIterator(index) )。 然后,它使用ListIterator.next获取元素并返回。

        Specified by:
        get在接口 List<E>
        Specified by:
        getAbstractList<E>
        参数
        index - 要返回的元素的索引
        结果
        该列表中指定位置的元素
        异常
        IndexOutOfBoundsException - 如果索引超出范围( index < 0 || index >= size()
      • set

        public E set​(int index,
                     E element)
        用指定的元素(可选操作)替换此列表中指定位置的元素。

        这个实现首先得到一个指向索引元素的列表迭代器(带有listIterator(index) )。 然后,利用获取当前元素ListIterator.next ,并会将其替换为ListIterator.set

        注意,此实现将抛出UnsupportedOperationException如果列表迭代器没有实现set操作。

        Specified by:
        set在接口 List<E>
        重写:
        setAbstractList<E>
        参数
        index - 要替换的元素的索引
        element - 要存储在指定位置的元素
        结果
        该元素以前在指定的位置
        异常
        UnsupportedOperationException - 如果此列表不支持 set操作
        ClassCastException - 如果指定元素的类阻止将其添加到此列表中
        NullPointerException - 如果指定的元素为空,并且此列表不允许空元素
        IllegalArgumentException - 如果指定元素的某些属性阻止将其添加到此列表中
        IndexOutOfBoundsException - 如果索引超出范围( index < 0 || index >= size()
      • add

        public void add​(int index,
                        E element)
        将指定的元素插入此列表中的指定位置(可选操作)。 将当前位于该位置的元素(如果有)和任何后续元素(向其索引添加一个)移动。

        此实现首先获取指向索引元素的列表迭代器(具有listIterator(index) )。 然后,它将使用ListIterator.add插入指定的元素。

        注意,此实现将抛出UnsupportedOperationException如果列表迭代器没有实现add操作。

        Specified by:
        add在接口 List<E>
        重写:
        addAbstractList<E>
        参数
        index - 要插入指定元素的索引
        element - 要插入的元素
        异常
        UnsupportedOperationException - 如果此列表不支持 add操作
        ClassCastException - 如果指定元素的类阻止将其添加到此列表中
        NullPointerException - 如果指定的元素为空,并且该列表不允许空元素
        IllegalArgumentException - 如果指定元素的某些属性阻止将其添加到此列表中
        IndexOutOfBoundsException - 如果索引超出范围( index < 0 || index > size()
      • remove

        public E remove​(int index)
        删除该列表中指定位置的元素(可选操作)。 将任何后续元素移动到左侧(从其索引中减去一个元素)。 返回从列表中删除的元素。

        该实现首先获得指向索引元素的列表迭代器(具有listIterator(index) )。 然后,它用ListIterator.remove删除元素。

        注意,此实现将抛出UnsupportedOperationException如果列表迭代器没有实现remove操作。

        Specified by:
        remove在接口 List<E>
        重写:
        removeAbstractList<E>
        参数
        index - 要删除的元素的索引
        结果
        该元素以前在指定的位置
        异常
        UnsupportedOperationException - 如果此列表不支持 remove操作
        IndexOutOfBoundsException - 如果索引超出范围( index < 0 || index >= size()
      • addAll

        public boolean addAll​(int index,
                              Collection<? extends E> c)
        将指定集合中的所有元素插入到此列表中的指定位置(可选操作)。 将当前位于该位置(如果有的话)的元素和随后的任何元素移动到右边(增加其索引)。 新元素将按照指定集合的迭代器返回的顺序显示在此列表中。 如果在操作进行中修改了指定的集合,则此操作的行为是未定义的。 (注意,如果指定的集合是此列表,并且它是非空的,则会发生这种情况。)

        此实现在指定的集合上获取迭代器,并在此列表上指向列表迭代器,指向索引元素(具有listIterator(index) )。 然后,它迭代指定的集合,将从迭代器获取的元素插入到此列表中,一次一个,使用ListIterator.add然后是ListIterator.next (跳过添加的元素)。

        注意,此实现将抛出UnsupportedOperationException如果返回的列表迭代listIterator方法没有实现add操作。

        Specified by:
        addAll在接口 List<E>
        重写:
        addAllAbstractList<E>
        参数
        index - 从中指定集合插入第一个元素的索引
        c - 包含要添加到此列表的元素的集合
        结果
        true如果此列表因呼叫而更改
        异常
        UnsupportedOperationException - 如果此列表不支持 addAll操作
        ClassCastException - 如果指定集合的元素的类阻止将其添加到此列表中
        NullPointerException - 如果指定的集合包含一个或多个空元素,并且此列表不允许空元素,或者如果指定的集合为空
        IllegalArgumentException - 如果指定集合的元素的某些属性阻止其添加到此列表中
        IndexOutOfBoundsException - 如果索引超出范围( index < 0 || index > size()
      • iterator

        public Iterator<E> iterator​()
        返回此列表中的元素的迭代器(按适当的顺序)。

        该实现只返回列表中的列表迭代器。

        Specified by:
        iterator在接口 Collection<E>
        Specified by:
        iterator在接口 Iterable<E>
        Specified by:
        iterator在接口 List<E>
        重写:
        iteratorAbstractList<E>
        结果
        在该列表中的元素的迭代器(按适当的顺序)
      • listIterator

        public abstract ListIterator<E> listIterator​(int index)
        返回列表中的列表迭代器(按适当的顺序)。
        Specified by:
        listIterator在接口 List<E>
        重写:
        listIteratorAbstractList<E>
        参数
        index - 要从列表迭代器返回的第一个元素的索引(通过调用 next方法)
        结果
        在列表中的元素的列表迭代器(按适当的顺序)
        异常
        IndexOutOfBoundsException - 如果索引超出范围( index < 0 || index > size()