Module java.base
Package java.util

Class AbstractSequentialList<E>

java.lang.Object
java.util.AbstractCollection<E>
java.util.AbstractList<E>
java.util.AbstractSequentialList<E>
类型参数:
E - 此列表中元素的类型
所有已实现的接口:
Iterable<E>, Collection<E>, List<E>, SequencedCollection<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 接口规范的建议。

这个类是 Java 集合框架 的成员。

自版本:
1.2
参见:
  • Constructor Details

    • AbstractSequentialList

      protected AbstractSequentialList()
      唯一构造函数。(通常由子类构造函数隐式调用。)
  • Method Details

    • get

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

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

      指定者:
      get 在接口 List<E>
      指定者:
      get 在类 AbstractList<E>
      参数:
      index - 要返回的元素的索引
      返回:
      此列表中指定位置的元素
      抛出:
      IndexOutOfBoundsException - 如果索引超出范围(index < 0 || index >= size()
    • set

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

      此实现首先获取指向索引元素的列表迭代器(使用 listIterator(index))。然后,使用 ListIterator.next 获取当前元素并用 ListIterator.set 替换它。

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

      指定者:
      set 在接口 List<E>
      覆盖:
      set 在类 AbstractList<E>
      参数:
      index - 要替换的元素的索引
      element - 要存储在指定位置的元素
      返回:
      先前在指定位置的元素
      抛出:
      UnsupportedOperationException - 如果此列表不支持 set 操作
      ClassCastException - 如果指定元素的类阻止将其添加到此列表
      NullPointerException - 如果指定元素为 null 并且此列表不允许 null 元素
      IllegalArgumentException - 如果指定元素的某些属性阻止将其添加到此列表
      IndexOutOfBoundsException - 如果索引超出范围(index < 0 || index >= size()
    • add

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

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

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

      指定者:
      add 在接口 List<E>
      覆盖:
      add 在类 AbstractList<E>
      参数:
      index - 要插入指定元素的索引
      element - 要插入的元素
      抛出:
      UnsupportedOperationException - 如果此列表不支持 add 操作
      ClassCastException - 如果指定元素的类阻止将其添加到此列表
      NullPointerException - 如果指定元素为 null 并且此列表不允许 null 元素
      IllegalArgumentException - 如果指定元素的某些属性阻止将其添加到此列表
      IndexOutOfBoundsException - 如果索引超出范围(index < 0 || index > size()
    • remove

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

      此实现首先获取指向索引元素的列表迭代器(使用 listIterator(index))。然后,使用 ListIterator.remove 删除元素。

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

      指定由:
      remove 在接口 List<E>
      覆盖:
      remove 在类 AbstractList<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(跳过添加的元素)。

      请注意,如果listIterator方法返回的列表迭代器不实现add操作,则此实现将抛出UnsupportedOperationException

      指定由:
      addAll 在接口 List<E>
      覆盖:
      addAll 在类 AbstractList<E>
      参数:
      index - 要从指定集合插入第一个元素的索引
      c - 包含要添加到此列表的元素的集合
      返回:
      如果调用导致此列表更改,则返回true
      抛出:
      UnsupportedOperationException - 如果此列表不支持addAll操作
      ClassCastException - 如果指定集合的元素的类阻止将其添加到此列表
      NullPointerException - 如果指定集合包含一个或多个空元素且此列表不允许空元素,或者指定集合为null
      IllegalArgumentException - 如果指定集合的元素的某些属性阻止将其添加到此列表
      IndexOutOfBoundsException - 如果索引超出范围(index < 0 || index > size()
    • iterator

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

      此实现仅返回列表上的列表迭代器。

      指定由:
      iterator 在接口 Collection<E>
      指定由:
      iterator 在接口 Iterable<E>
      指定由:
      iterator 在接口 List<E>
      覆盖:
      iterator 在类 AbstractList<E>
      返回:
      返回此列表中元素的迭代器(按正确顺序)
    • listIterator

      public abstract ListIterator<E> listIterator(int index)
      返回此列表中元素的列表迭代器(按正确顺序)。
      指定由:
      listIterator 在接口 List<E>
      覆盖:
      listIterator 在类 AbstractList<E>
      参数:
      index - 通过调用next方法从列表迭代器返回的第一个元素的索引
      返回:
      返回此列表中元素的列表迭代器(按正确顺序)
      抛出:
      IndexOutOfBoundsException - 如果索引超出范围(index < 0 || index > size()