- java.lang.Object
-
- java.util.AbstractCollection<E>
-
- java.util.AbstractList<E>
-
- java.util.AbstractSequentialList<E>
-
- All Implemented Interfaces:
-
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)
上列表的列表迭代器的顶部),而不是周围的其他方法。为了实现一个列表,程序员只需要扩展这个类并提供
listIterator
和size
方法的实现。 对于一个不可修改的列表,程序员只需要实现列表迭代器的hasNext
,next
,hasPrevious
,previous
和index
方法。对于可修改的列表,程序员应该另外实现列表迭代器的
set
方法。 对于可变大小的列表,程序员还应该实现列表迭代器的remove
和add
方法。根据
Collection
接口规范中的建议,程序员通常应该提供一个void(无参数)和集合构造函数。这个类是Java Collections Framework的成员。
- 从以下版本开始:
- 1.2
- 另请参见:
-
Collection
,List
,AbstractList
,AbstractCollection
-
-
Field Summary
-
Fields inherited from class java.util.AbstractList
modCount
-
-
构造方法摘要
构造方法 Modifier Constructor 描述 protected
AbstractSequentialList()
唯一的构造函数。
-
方法摘要
所有方法 接口方法 抽象方法 具体的方法 Modifier and Type 方法 描述 void
add(int index, E element)
将指定的元素插入此列表中的指定位置(可选操作)。boolean
addAll(int index, Collection<? extends E> c)
将指定集合中的所有元素插入到此列表中的指定位置(可选操作)。E
get(int index)
返回此列表中指定位置的元素。Iterator<E>
iterator()
返回此列表中的元素的迭代器(按适当的顺序)。abstract ListIterator<E>
listIterator(int index)
返回列表中的列表迭代器(按适当的顺序)。E
remove(int index)
删除该列表中指定位置的元素(可选操作)。E
set(int index, E element)
用指定的元素(可选操作)替换此列表中指定位置的元素。-
Methods inherited from class java.util.AbstractCollection
addAll, contains, containsAll, isEmpty, remove, removeAll, retainAll, size, toArray, toArray, toString
-
Methods inherited from class java.util.AbstractList
add, clear, equals, hashCode, indexOf, lastIndexOf, listIterator, removeRange, subList
-
Methods inherited from interface java.util.Collection
parallelStream, removeIf, stream
-
-
-
-
方法详细信息
-
get
public E get(int index)
返回此列表中指定位置的元素。此实现首先获取指向索引元素的列表迭代器(具有
listIterator(index)
)。 然后,它使用ListIterator.next
获取元素并返回。- Specified by:
-
get
在接口List<E>
- Specified by:
-
get
在AbstractList<E>
- 参数
-
index
- 要返回的元素的索引 - 结果
- 该列表中指定位置的元素
- 异常
-
IndexOutOfBoundsException
- 如果索引超出范围(index < 0 || index >= size()
)
-
set
public E set(int index, E element)
用指定的元素(可选操作)替换此列表中指定位置的元素。这个实现首先得到一个指向索引元素的列表迭代器(带有
listIterator(index)
)。 然后,利用获取当前元素ListIterator.next
,并会将其替换为ListIterator.set
。注意,此实现将抛出
UnsupportedOperationException
如果列表迭代器没有实现set
操作。- Specified by:
-
set
在接口List<E>
- 重写:
-
set
在AbstractList<E>
- 参数
-
index
- 要替换的元素的索引 -
element
- 要存储在指定位置的元素 - 结果
- 该元素以前在指定的位置
- 异常
-
UnsupportedOperationException
- 如果此列表不支持set
操作 -
ClassCastException
- 如果指定元素的类阻止将其添加到此列表中 -
NullPointerException
- 如果指定的元素为空,并且此列表不允许空元素 -
IllegalArgumentException
- 如果指定元素的某些属性阻止将其添加到此列表中 -
IndexOutOfBoundsException
- 如果索引超出范围(index < 0 || index >= size()
)
-
add
public void add(int index, E element)
将指定的元素插入此列表中的指定位置(可选操作)。 将当前位于该位置的元素(如果有)和任何后续元素(向其索引添加一个)移动。此实现首先获取指向索引元素的列表迭代器(具有
listIterator(index)
)。 然后,它将使用ListIterator.add
插入指定的元素。注意,此实现将抛出
UnsupportedOperationException
如果列表迭代器没有实现add
操作。- Specified by:
-
add
在接口List<E>
- 重写:
-
add
在AbstractList<E>
- 参数
-
index
- 要插入指定元素的索引 -
element
- 要插入的元素 - 异常
-
UnsupportedOperationException
- 如果此列表不支持add
操作 -
ClassCastException
- 如果指定元素的类阻止将其添加到此列表中 -
NullPointerException
- 如果指定的元素为空,并且该列表不允许空元素 -
IllegalArgumentException
- 如果指定元素的某些属性阻止将其添加到此列表中 -
IndexOutOfBoundsException
- 如果索引超出范围(index < 0 || index > size()
)
-
remove
public E remove(int index)
删除该列表中指定位置的元素(可选操作)。 将任何后续元素移动到左侧(从其索引中减去一个元素)。 返回从列表中删除的元素。该实现首先获得指向索引元素的列表迭代器(具有
listIterator(index)
)。 然后,它用ListIterator.remove
删除元素。注意,此实现将抛出
UnsupportedOperationException
如果列表迭代器没有实现remove
操作。- Specified by:
-
remove
在接口List<E>
- 重写:
-
remove
在AbstractList<E>
- 参数
-
index
- 要删除的元素的索引 - 结果
- 该元素以前在指定的位置
- 异常
-
UnsupportedOperationException
- 如果此列表不支持remove
操作 -
IndexOutOfBoundsException
- 如果索引超出范围(index < 0 || index >= size()
)
-
addAll
public boolean addAll(int index, Collection<? extends E> c)
将指定集合中的所有元素插入到此列表中的指定位置(可选操作)。 将当前位于该位置(如果有的话)的元素和随后的任何元素移动到右边(增加其索引)。 新元素将按照指定集合的迭代器返回的顺序显示在此列表中。 如果在操作进行中修改了指定的集合,则此操作的行为是未定义的。 (注意,如果指定的集合是此列表,并且它是非空的,则会发生这种情况。)此实现在指定的集合上获取迭代器,并在此列表上指向列表迭代器,指向索引元素(具有
listIterator(index)
)。 然后,它迭代指定的集合,将从迭代器获取的元素插入到此列表中,一次一个,使用ListIterator.add
然后是ListIterator.next
(跳过添加的元素)。注意,此实现将抛出
UnsupportedOperationException
如果返回的列表迭代listIterator
方法没有实现add
操作。- Specified by:
-
addAll
在接口List<E>
- 重写:
-
addAll
在AbstractList<E>
- 参数
-
index
- 从中指定集合插入第一个元素的索引 -
c
- 包含要添加到此列表的元素的集合 - 结果
-
true
如果此列表因呼叫而更改 - 异常
-
UnsupportedOperationException
- 如果此列表不支持addAll
操作 -
ClassCastException
- 如果指定集合的元素的类阻止将其添加到此列表中 -
NullPointerException
- 如果指定的集合包含一个或多个空元素,并且此列表不允许空元素,或者如果指定的集合为空 -
IllegalArgumentException
- 如果指定集合的元素的某些属性阻止其添加到此列表中 -
IndexOutOfBoundsException
- 如果索引超出范围(index < 0 || index > size()
)
-
listIterator
public abstract ListIterator<E> listIterator(int index)
返回列表中的列表迭代器(按适当的顺序)。- Specified by:
-
listIterator
在接口List<E>
- 重写:
-
listIterator
在AbstractList<E>
- 参数
-
index
- 要从列表迭代器返回的第一个元素的索引(通过调用next
方法) - 结果
- 在列表中的元素的列表迭代器(按适当的顺序)
- 异常
-
IndexOutOfBoundsException
- 如果索引超出范围(index < 0 || index > size()
)
-
-