- 类型参数:
-
E
- 此列表中元素的类型
- 所有已实现的接口:
-
Iterable<E>
,Collection<E>
,List<E>
,SequencedCollection<E>
- 直接已知的子类:
-
LinkedList
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
方法。对于可变大小的列表,程序员还应该实现列表迭代器的 remove
和 add
方法。
通常,程序员应该提供一个无参数和集合构造函数,根据 Collection
接口规范的建议。
这个类是 Java 集合框架 的成员。
- 自版本:
- 1.2
- 参见:
-
Field Summary
Fields declared in class java.util.AbstractList
modCount
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
在列表的指定位置插入指定的元素(可选操作)。boolean
addAll
(int index, Collection<? extends E> c) 将指定集合中的所有元素插入到列表的指定位置(可选操作)。get
(int index) 返回列表中指定位置的元素。iterator()
返回此列表中元素的迭代器(按正确顺序)。abstract ListIterator
<E> listIterator
(int index) 返回此列表中元素的列表迭代器(按正确顺序)。remove
(int index) 删除列表中指定位置的元素(可选操作)。用指定元素替换列表中指定位置的元素(可选操作)。Methods declared in class java.util.AbstractList
add, clear, equals, hashCode, indexOf, lastIndexOf, listIterator, removeRange, subList
Methods declared in class java.util.AbstractCollection
addAll, contains, containsAll, isEmpty, remove, removeAll, retainAll, toArray, toArray, toString
Methods declared in class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods declared in interface java.util.Collection
parallelStream, removeIf, stream, toArray
Methods declared in interface java.util.List
addAll, addFirst, addLast, contains, containsAll, getFirst, getLast, isEmpty, remove, removeAll, removeFirst, removeLast, replaceAll, retainAll, reversed, size, sort, spliterator, toArray, toArray
-
Constructor Details
-
AbstractSequentialList
protected AbstractSequentialList()唯一构造函数。(通常由子类构造函数隐式调用。)
-
-
Method Details
-
get
返回列表中指定位置的元素。此实现首先获取指向索引元素的列表迭代器(使用
listIterator(index)
)。然后,使用ListIterator.next
获取元素并返回它。- 指定者:
-
get
在接口List<E>
中 - 指定者:
-
get
在类AbstractList<E>
中 - 参数:
-
index
- 要返回的元素的索引 - 返回:
- 此列表中指定位置的元素
- 抛出:
-
IndexOutOfBoundsException
- 如果索引超出范围(index < 0 || index >= size()
)
-
set
用指定元素替换列表中指定位置的元素(可选操作)。此实现首先获取指向索引元素的列表迭代器(使用
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
在列表的指定位置插入指定的元素(可选操作)。将当前位于该位置的元素(如果有)和任何后续元素向右移动(将它们的索引加一)。此实现首先获取指向索引元素的列表迭代器(使用
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
删除列表中指定位置的元素(可选操作)。将任何后续元素向左移动(从它们的索引中减去一个)。返回从列表中删除的元素。此实现首先获取指向索引元素的列表迭代器(使用
listIterator(index)
)。然后,使用ListIterator.remove
删除元素。请注意,如果列表迭代器不实现
remove
操作,此实现将抛出UnsupportedOperationException
。- 指定由:
-
remove
在接口List<E>
中 - 覆盖:
-
remove
在类AbstractList<E>
中 - 参数:
-
index
- 要移除的元素的索引 - 返回:
- 指定位置之前的元素
- 抛出:
-
UnsupportedOperationException
- 如果此列表不支持remove
操作 -
IndexOutOfBoundsException
- 如果索引超出范围(index < 0 || index >= size()
)
-
addAll
将指定集合中的所有元素插入到列表中的指定位置(可选操作)。将当前位于该位置的元素(如果有)和任何后续元素向右移动(增加它们的索引)。新元素将按照指定集合的迭代器返回它们的顺序出现在此列表中。如果在操作进行中修改了指定集合,则此操作的行为是未定义的。(请注意,如果指定集合是此列表且非空,则会发生这种情况。)此实现获取指定集合的迭代器和指向索引元素的此列表的列表迭代器(使用
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
返回此列表中元素的迭代器(按正确顺序)。此实现仅返回列表上的列表迭代器。
-
listIterator
返回此列表中元素的列表迭代器(按正确顺序)。- 指定由:
-
listIterator
在接口List<E>
中 - 覆盖:
-
listIterator
在类AbstractList<E>
中 - 参数:
-
index
- 通过调用next
方法从列表迭代器返回的第一个元素的索引 - 返回:
- 返回此列表中元素的列表迭代器(按正确顺序)
- 抛出:
-
IndexOutOfBoundsException
- 如果索引超出范围(index < 0 || index > size()
)
-