java.lang.Object java.util.AbstractCollection<E> java.util.AbstractList<E> java.util.AbstractSequentialList<E>
public abstract class AbstractSequentialList<E>
此类提供了 List 接口的骨干实现,从而最大限度地减少了实现受“连续访问”数据存储(如链接列表)支持的此接口所需的工作。对于随机访问数据(如数组),应该优先使用 AbstractList,而不是先使用此类。
从某种意义上说,此类与在列表的列表迭代器上实现“随机访问”方法(get(int index)、set(int index, E element)、add(int index, E element) 和 remove(int index))的 AbstractList 类相对立,而不是其他关系。
要实现一个列表,程序员只需要扩展此类,并提供 listIterator 和 size 方法的实现即可。对于不可修改的列表,程序员只需要实现列表迭代器的 hasNext、next、hasPrevious、previous 和 index 方法即可。
对于可修改的列表,程序员应该再另外实现列表迭代器的 set 方法。对于可变大小的列表,程序员应该再另外实现列表迭代器的 remove 和 add 方法。
按照 Collection 接口规范中的推荐,程序员通常应该提供一个 void(无参数)构造方法和 collection 构造方法。
此类是 Java Collections Framework 的成员。
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 |
构造方法详细信息 |
---|
protected AbstractSequentialList()
方法详细信息 |
---|
public E get(int index)
此实现首先获得一个指向索引元素的列表迭代器(通过 listIterator(index) 方法)。然后它使用 ListIterator.next 获得该元素并返回它。
index
- 要返回的元素的索引
IndexOutOfBoundsException
- 如果索引超出范围 (
index < 0 || index >= size())
public E set(int index, E element)
此实现首先获得一个指向索引元素的列表迭代器(通过 listIterator(index) 方法)。然后它使用 ListIterator.next 获得当前元素,并使用 ListIterator.set 替代它。
注意,如果该列表迭代器没有实现 set 操作,则此实现将抛出 UnsupportedOperationException。
index
- 要替换的元素的索引
element
- 要在指定位置存储的元素
UnsupportedOperationException
- 如果列表不支持
set 操作
ClassCastException
- 如果指定元素的类不允许它添加到此列表
NullPointerException
- 如果指定的元素为 null,并且此列表不允许 null 元素
IllegalArgumentException
- 如果指定元素的某些属性不允许它添加到此列表
IndexOutOfBoundsException
- 如果索引超出范围 (
index < 0 || index >= size())
public void add(int index, E element)
此实现首先获得一个指向索引元素的列表迭代器(通过 listIterator(index))。然后它使用 ListIterator.add 插入指定的元素。
注意,如果列表迭代器没有实现 add 操作,则此实现将抛出 UnsupportedOperationException。
index
- 要在其中插入指定元素处的索引
element
- 要插入的元素
UnsupportedOperationException
- 如果列表不支持
add 操作
ClassCastException
- 如果指定元素的类不允许它添加到此列表
NullPointerException
- 如果指定的元素为 null,并且此列表不允许 null 元素
IllegalArgumentException
- 如果指定元素的某些属性不允许它添加到此列表
IndexOutOfBoundsException
- 如果索引超出范围 (
index < 0 || index > size())
public E remove(int index)
此实现首先获得一个指向索引元素的列表迭代器(通过 listIterator(index) 方法)。然后它使用 ListIterator.remove 移除该元素。
注意,如果该列表迭代器没有实现 remove 操作,则此实现将抛出 UnsupportedOperationException。
index
- 要移除的元素的索引
UnsupportedOperationException
- 如果列表不支持
remove 操作
IndexOutOfBoundsException
- 如果索引超出范围 (
index < 0 || index >= size())
public boolean addAll(int index, Collection<? extends E> c)
此实现获得指定 collection 的迭代器,以及此列表指向索引元素的列表迭代器(通过 listIterator(index) 方法)。然后,它在指定的 collection 上进行迭代,通过使用 ListIterator.next 之后紧接着使用 ListIterator.add 方法(以跳过添加的元素),把从迭代器中获得的元素逐个插入此列表中。
注意,如果 listIterator 方法返回的列表迭代器没有实现 add 操作,则此实现将会抛出 UnsupportedOperationException。
index
- 将指定 collection 的第一个元素所插入位置的索引
c
- 包含要添加到此列表的元素的 collection
UnsupportedOperationException
- 如果列表不支持
addAll 操作
ClassCastException
- 如果指定 collection 中某个元素的类不允许它添加到此列表
NullPointerException
- 如果指定的 collection 包含一个或多个 null 元素,并且该列表不允许 null 元素,或者指定的 collection 为 null
IllegalArgumentException
- 如果指定 collection 的元素的某些属性不允许它添加到此列表
IndexOutOfBoundsException
- 如果索引超出范围 (
index < 0 || index > size())
public Iterator<E> iterator()
此实现仅返回列表的一个列表迭代器。
AbstractList.modCount
public abstract ListIterator<E> listIterator(int index)
List<E>
中的
listIterator
AbstractList<E>
中的
listIterator
index
- 从列表迭代器返回(通过调用
next
方法)的第一个元素的索引
IndexOutOfBoundsException
- 如果索引超出范围 (
index < 0 || index > size())
AbstractList.modCount