模块 java.base
 java.util

类 AbstractSequentialList<E>

java.lang.Object
java.util.AbstractCollection <E>
java.util.AbstractList <E>
java.util.AbstractSequentialList<E>
类型参数:
E - 此list中元素的类型
所有已实现的接口:
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 集合框架 的成员。

自从:
1.2
参见:
  • 构造方法详细信息

    • AbstractSequentialList

      protected AbstractSequentialList()
      唯一的构造方法。 (对于子类构造方法的调用,通常是隐式的。)
  • 方法详情

    • get

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      指定者:
      remove 在接口 List<E>
      重写:
      remove 在类 AbstractList<E>
      参数:
      index - 要删除的元素的索引
      返回:
      先前在指定位置的元素
      抛出:
      UnsupportedOperationException - 如果此list不支持 remove 操作
      IndexOutOfBoundsException - 如果索引超出范围 (index < 0 || index >= size())
    • addAll

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

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

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

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

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

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

      指定者:
      iterator 在接口 Collection<E>
      指定者:
      iterator 在接口 Iterable<E>
      指定者:
      iterator 在接口 List<E>
      重写:
      iterator 在类 AbstractList<E>
      返回:
      此list中元素的迭代器(按正确顺序)
    • listIterator

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