AbstractSequentialList
java.lang.Object
|—java.util.AbstractCollection<E&
|—|—java.util.AbstractList<E&
|—|—|—java.util.AbstractSequentialList<E&
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 )) 在列表的列表迭代器之上,而不是相反。
要实现一个列表,程序员只需要扩展这个类并提供 listIterator 和 size 方法的实现。对于不可修改的列表,程序员只需要实现列表迭代器的hasNext、next、hasPrevious、previous和index方法即可。
对于可修改的列表,程序员应该另外实现列表迭代器的 set 方法。对于可变大小的列表,程序员应该另外实现列表迭代器的删除和添加方法。
根据 Collection 接口规范中的建议,程序员通常应该提供一个 void(无参数)和集合构造函数。
此类是 Java 集合框架的成员。
字段摘要
从类 java.util.AbstractList 继承的字段 |
---|
modCount |
构造函数摘要
修饰符 | 构造函数 | 描述 |
---|---|---|
protected | AbstractSequentialList() | 唯一的构造函数。 |
方法总结
修饰符和类型 | 方法 | 描述 |
---|---|---|
void | add(int index, E element) | 在此列表中的指定位置插入指定元素(可选操作)。 |
boolean | addAll(int index, Collection<? extends E> c) | 将指定集合中的所有元素插入到此列表中的指定位置(可选操作)。 |
E | get(int index) | 返回此列表中指定位置的元素。 |
IteratorE | iterator() | 返回此列表中元素的迭代器(以正确的顺序)。 |
abstract ListIteratorE | listIterator(int index) | 返回此列表中元素的列表迭代器(以正确的顺序)。 |
E | remove(int index) | 移除此列表中指定位置的元素(可选操作)。 |
E | set(int index, E element) | 将此列表中指定位置的元素替换为指定元素(可选操作)。 |
从类 java.util.AbstractCollection 继承的方法 |
---|
addAll, contains, containsAll, isEmpty, remove, removeAll, retainAll, size, toArray, toArray, toString |
从类 java.util.AbstractList 继承的方法 |
---|
add, clear, equals, hashCode, indexOf, lastIndexOf, listIterator, removeRange, subList |
从接口 java.util.Collection 继承的方法 |
---|
parallelStream, removeIf, stream |
从接口 java.lang.Iterable 继承的方法 |
---|
forEach |
从接口 java.util.List 继承的方法 |
---|
addAll, contains, containsAll, isEmpty, remove, removeAll, replaceAll, retainAll, size, sort, spliterator, toArray, toArray |
从类 java.lang.Object 继承的方法 |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
构造函数详细信息
AbstractSequentialList
protected AbstractSequentialList()
唯一的构造函数。 (用于子类构造函数的调用,通常是隐式的。)
方法详情
get
public E get(int index)
返回此列表中指定位置的元素。
此实现首先获取一个指向索引元素的列表迭代器(使用 listIterator(index))。 然后,它使用 ListIterator.next 获取元素并返回它。
指定者:
进入接口 ListE
指定者:
进入类 AbstractListE
参数:
参数名称 | 参数描述 |
---|---|
index | 要返回的元素的索引 |
返回:
此列表中指定位置的元素
Throws:
Throw名称 | Throw描述 |
---|---|
IndexOutOfBoundsException | 如果索引超出范围 (index < 0 || index >= size()) |
set
public E set(int index, E element)
将此列表中指定位置的元素替换为指定元素(可选操作)。
此实现首先获取一个指向索引元素的列表迭代器(使用 listIterator(index))。 然后,它使用 ListIterator.next 获取当前元素并将其替换为 ListIterator.set。
请注意,如果列表迭代器未实现 set 操作,此实现将抛出 UnsupportedOperationException。
指定者:
在接口 ListE 中设置
覆盖:
在类 AbstractListE 中设置
参数:
参数名称 | 参数描述 |
---|---|
index | 要替换的元素的索引 |
element | 要存储在指定位置的元素 |
返回:
先前在指定位置的元素
Throws:
Throw名称 | Throw描述 |
---|---|
UnsupportedOperationException | 如果此列表不支持设置操作 |
ClassCastException | 如果指定元素的类阻止它被添加到这个列表中 |
NullPointerException | 如果指定元素为空且此列表不允许空元素 |
IllegalArgumentException | 如果指定元素的某些属性阻止它被添加到此列表中 |
IndexOutOfBoundsException | 如果索引超出范围 (index < 0 || index >= size()) |
add
public void add(int index, E element)
在此列表中的指定位置插入指定元素(可选操作)。 将当前位于该位置的元素(如果有)和任何后续元素向右移动(将其索引加一)。
此实现首先获取一个指向索引元素的列表迭代器(使用 listIterator(index))。 然后,它使用 ListIterator.add 插入指定的元素。
请注意,如果列表迭代器未实现添加操作,此实现将抛出 UnsupportedOperationException。
指定者:
添加接口ListE
覆盖:
添加类 AbstractListE
参数:
参数名称 | 参数描述 |
---|---|
index | 要插入指定元素的索引 |
element | 要插入的元素 |
Throws:
Throw名称 | Throw描述 |
---|---|
UnsupportedOperationException | 如果此列表不支持添加操作 |
ClassCastException | 如果指定元素的类阻止它被添加到这个列表中 |
NullPointerException | 如果指定元素为空且此列表不允许空元素 |
IllegalArgumentException | 如果指定元素的某些属性阻止它被添加到此列表中 |
IndexOutOfBoundsException | 如果索引超出范围 (index < 0 || index > size()) |
remove
public E remove(int index)
移除此列表中指定位置的元素(可选操作)。 将任何后续元素向左移动(从它们的索引中减去 1)。 返回从列表中删除的元素。
此实现首先获取一个指向索引元素的列表迭代器(使用 listIterator(index))。 然后,它使用 ListIterator.remove 删除元素。
请注意,如果列表迭代器未实现删除操作,此实现将抛出 UnsupportedOperationException。
指定者:
在接口 ListE 中删除
覆盖:
在类 AbstractListE 中删除
参数:
参数名称 | 参数描述 |
---|---|
index | 要删除的元素的索引 |
返回:
先前在指定位置的元素
Throws:
Throw名称 | Throw描述 |
---|---|
UnsupportedOperationException | 如果此列表不支持删除操作 |
IndexOutOfBoundsException | 如果索引超出范围 (index < 0 || index >= size()) |
addAll
public boolean addAll(int index, Collection<? extends E> c)
将指定集合中的所有元素插入到此列表中的指定位置(可选操作)。将当前位于该位置的元素(如果有)和任何后续元素向右移动(增加它们的索引)。新元素将按照指定集合的迭代器返回的顺序出现在此列表中。如果在操作正在进行时修改了指定的集合,则此操作的行为是未定义的。 (请注意,如果指定的集合是这个列表,并且它是非空的,则会发生这种情况。)
此实现获取指定集合的迭代器和指向索引元素的列表迭代器(使用 listIterator(index))。然后,它迭代指定的集合,将从迭代器获得的元素插入到这个列表中,一次一个,使用 ListIterator.add 后跟 ListIterator.next(跳过添加的元素)。
请注意,如果 listIterator 方法返回的列表迭代器未实现添加操作,则此实现将抛出 UnsupportedOperationException。
指定者:
接口 ListE 中的 addAll
覆盖:
类 AbstractListE 中的 addAll
参数:
参数名称 | 参数描述 |
---|---|
index | 插入指定集合中第一个元素的索引 |
c | 包含要添加到此列表的元素的集合 |
返回:
如果此列表因调用而更改,则为 true
Throws:
Throw名称 | Throw描述 |
---|---|
UnsupportedOperationException | 如果此列表不支持 addAll 操作 |
ClassCastException | 如果指定集合的元素的类阻止它被添加到此列表中 |
NullPointerException | 如果指定的集合包含一个或多个空元素并且此列表不允许空元素,或者指定的集合为空 |
IllegalArgumentException | 如果指定集合的某个元素的某些属性阻止它被添加到此列表中 |
IndexOutOfBoundsException | 如果索引超出范围 (index < 0 || index > size()) |
iterator
public IteratorE iterator()
返回此列表中元素的迭代器(以正确的顺序)。
此实现仅返回列表上的列表迭代器。
指定者:
接口 CollectionE 中的迭代器
指定者:
接口 IterableE 中的迭代器
指定者:
接口 ListE 中的迭代器
覆盖:
AbstractListE 类中的迭代器
返回:
此列表中元素的迭代器(按正确顺序)
listIterator
public abstract ListIteratorE listIterator(int index)
返回此列表中元素的列表迭代器(以正确的顺序)。
指定者:
接口 ListE 中的 listIterator
覆盖:
AbstractListE 类中的 listIterator
参数:
参数名称 | 参数描述 |
---|---|
index | 要从列表迭代器返回的第一个元素的索引(通过调用 next 方法) |
返回:
此列表中元素的列表迭代器(按正确顺序)
Throws:
Throw名称 | Throw描述 |
---|---|
IndexOutOfBoundsException | 如果索引超出范围 (index < 0 || index > size()) |