AbstractSequentialList
java.util
类 AbstractSequentialList<E>
java.lang.Object
java.util.AbstractCollection<E>
java.util.AbstractList<E>
java.util.AbstractSequentialList<E>
所有已实现的接口:
Iterable<E>, Collection<E>, List<E>
直接已知子类:
LinkedList
--------------------------------------------------------------------------------
public abstract class AbstractSequentialList<E>extends AbstractList<E>此类提供了 List 接口的骨干实现,从而最大限度地减少了实现受“连续访问”数据存储(如链接列表)支持的此接口所需的工作。对于随机访问数据(如数组),应该优先使用 AbstractList,而不是先使用此类。
从某种意义上说,此类与在列表的列表迭代器上实现“随机访问”方法(get(int index)、set(int index, Object element)、set(int index, Object element)、add(int index, Object element) 和 remove(int index))的 AbstractList 类相对立,而不是其他关系。
要实现一个列表,程序员只需要扩展此类,并提供 listIterator 和 size 方法的实现即可。对于不可修改的列表,程序员只需要实现列表迭代器的 hasNext、next、hasPrevious、previous 和 index 方法即可。
对于可修改的列表,程序员应该再另外实现列表迭代器的 set 方法。对于可变大小的列表,程序员应该再另外实现列表迭代器的 remove 和 add 方法。
按照 Collection 接口规范中的推荐,程序员通常应该提供一个 void(无参数)构造方法和 collection 构造方法。
此类是 Java Collections Framework 的成员。
从以下版本开始:
1.2
另请参见:
Collection, List, AbstractList, AbstractCollection
--------------------------------------------------------------------------------
字段摘要
从类 java.util.AbstractList 继承的字段
modCount
构造方法摘要
protected AbstractSequentialList()
单独的构造方法。
方法摘要
void add(int index, E element)
在此列表中的指定位置上插入指定的元素。
boolean addAll(int index, Collection<? extends E> c)
在此列表中指定的位置上插入指定 collection 中的所有元素。
E get(int index)
返回此列表中指定位置上的元素。
Iterator<E> iterator()
返回在此列表中的元素上进行迭代的迭代器(按适当顺序)。
abstract ListIterator<E> listIterator(int index)
返回在此列表中的元素上进行迭代的列表迭代器(按适当顺序)。
E remove(int index)
移除此列表中指定位置上的元素。
E set(int index, E element)
用指定的元素替代此列表中指定位置上的元素。
从类 java.util.AbstractList 继承的方法
add, clear, equals, hashCode, indexOf, lastIndexOf, listIterator, removeRange, subList
从类 java.util.AbstractCollection 继承的方法
addAll, contains, containsAll, isEmpty, remove, removeAll, retainAll, size, toArray, toArray, toString
从类 java.lang.Object 继承的方法
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
从接口 java.util.List 继承的方法
addAll, contains, containsAll, isEmpty, remove, removeAll, retainAll, size, toArray, toArray
构造方法详细信息
AbstractSequentialList
protected AbstractSequentialList()单独的构造方法。(由子类构造方法调用,通常是隐式的。)
方法详细信息
get
public E get(int index)返回此列表中指定位置上的元素。
此实现首先获得一个指向索引元素的列表迭代器(通过 listIterator(index) 方法)。然后它使用 ListIterator.next 获得该元素并返回它。
指定者:
接口 List<E> 中的 get
指定者:
类 AbstractList<E> 中的 get
参数:
index - 要返回的元素的索引。
返回:
此列表中指定位置上的元素。
抛出:
IndexOutOfBoundsException - 如果指定的索引超出范围 (index < 0 || index >= size())。
--------------------------------------------------------------------------------
set
public E set(int index,
E element)用指定的元素替代此列表中指定位置上的元素。
此实现首先获得一个指向索引元素的列表迭代器(通过 listIterator(index) 方法)。然后它使用 ListIterator.next 获得当前元素,并使用 ListIterator.set 替代它。
注意,如果列表迭代器没有实现 set 操作,则此实现抛出 UnsupportedOperationException。
指定者:
接口 List<E> 中的 set
覆盖:
类 AbstractList<E> 中的 set
参数:
index - 要替代的元素的索引。
element - 将存储在指定位置上的元素。
返回:
以前位于指定位置上的元素。
抛出:
UnsupportedOperationException - 如果此列表不支持 set 操作。
NullPointerException - 此列表不允许 null 元素,并且 c 中的某个元素为 null。
ClassCastException - 指定元素的类不允许它添加到此列表中。
IllegalArgumentException - 指定元素的某方面不允许它添加到此列表中。
IndexOutOfBoundsException - 索引超出范围 (index < 0 || index >= size())。
IllegalArgumentException - 如果 fromIndex > toIndex。
--------------------------------------------------------------------------------
add
public void add(int index,
E element)在此列表中的指定位置上插入指定的元素。向右移动当前位于该位置上的元素(如果有)以及所有后续元素(将其索引加 1)。
此实现首先获得一个指向索引元素的列表迭代器(通过 listIterator(index) 方法)。然后它使用 ListIterator.add 插入指定的元素。
注意,如果列表迭代器没有实现 add 操作,则此实现抛出 UnsupportedOperationException。
指定者:
接口 List<E> 中的 add
覆盖:
类 AbstractList<E> 中的 add
参数:
index - 指定元素所插入位置的索引。
element - 要插入的元素。
抛出:
UnsupportedOperationException - 如果此列表不支持 add 操作。
NullPointerException - 此列表不允许 null 元素,并且 c 中的某个元素为 null。
ClassCastException - 如果指定元素的类不允许它添加到此列表中。
IllegalArgumentException - 如果指定元素的某方面不允许它添加到此列表中。
IndexOutOfBoundsException - 如果指定的索引超出范围 (index < 0 || index > size())。
--------------------------------------------------------------------------------
remove
public E remove(int index)移除此列表中指定位置上的元素。向左移动所有后续元素(将其索引减 1)。
此实现首先获得一个指向索引元素的列表迭代器(通过 listIterator(index) 方法)。然后它使用 ListIterator.remove 移除该元素。
注意,如果列表迭代器没有实现 remove 操作,则此实现抛出 UnsupportedOperationException。
指定者:
接口 List<E> 中的 remove
覆盖:
类 AbstractList<E> 中的 remove
参数:
index - 要从列表中移除的元素的索引。
返回:
从列表中移除的元素。
抛出:
UnsupportedOperationException - 如果此列表不支持 remove 操作。
IndexOutOfBoundsException - 如果指定的索引超出范围 (index < 0 || index > =size())。
--------------------------------------------------------------------------------
addAll
public boolean addAll(int index,
Collection<? extends E> c)在此列表中指定的位置上插入指定 collection 中的所有元素。向右移动当前位于该位置上的元素(如果有)以及所有后续元素(增加其索引)。新元素将按指定 collection 的迭代器所返回的顺序出现在列表中。如果正在进行此操作时修改指定的 collection,则此操作行为是未指定的。(注意,如果指定的 collection 是此列表并且是非空的,则会发生这种情况。)可选操作。
此实现获得指定 collection 的迭代器,以及此列表指向索引元素的列表迭代器(通过 listIterator(index) 方法)。然后,它在指定的 collection 上进行迭代,通过使用 ListIterator.next 之后紧接着使用 ListIterator.add 方法(以跳过添加的元素),把从迭代器中获得的元素逐个插入此列表中。
注意,如果 listIterator 方法返回的列表迭代器没有实现 add 操作,则此实现抛出 UnsupportedOperationException。
指定者:
接口 List<E> 中的 addAll
覆盖:
类 AbstractList<E> 中的 addAll
参数:
index - 插入指定 collection 中第一个元素的位置索引。
c - 要插入到此列表的元素。
返回:
如果此列表由于此方法的调用而发生改变,则返回 true。
抛出:
UnsupportedOperationException - 如果此列表不支持 addAll 操作。
NullPointerException - 如果此列表不允许 null 元素,并且指定 collection 中的某个元素为 null。
ClassCastException - 如果指定元素的类不允许它添加到此列表中。
IllegalArgumentException - 如果指定元素的某方面不允许它添加到此列表中。
IndexOutOfBoundsException - 如果指定的索引超出范围 (index < 0 || index > size())。
NullPointerException - 如果指定的 collection 为 null。
--------------------------------------------------------------------------------
iterator
public Iterator<E> iterator()返回在此列表中的元素上进行迭代的迭代器(按适当顺序)。
此实现仅返回列表的一个列表迭代器。
指定者:
接口 Iterable<E> 中的 iterator
指定者:
接口 Collection<E> 中的 iterator
指定者:
接口 List<E> 中的 iterator
覆盖:
类 AbstractList<E> 中的 iterator
返回:
在此列表中的元素上进行迭代的迭代器(按适当顺序)。
另请参见:
AbstractList.modCount
--------------------------------------------------------------------------------
listIterator
public abstract ListIterator<E> listIterator(int index)返回在此列表中的元素上进行迭代的列表迭代器(按适当顺序)。
指定者:
接口 List<E> 中的 listIterator
覆盖:
类 AbstractList<E> 中的 listIterator
参数:
index - 从列表迭代器返回(通过调用 next 方法)的第一个元素的索引
返回:
在此列表中的元素上进行迭代的列表迭代器(按适当顺序)。
另请参见:
AbstractList.modCount