AbstractSequentialList繼承自AbstractList,是LinkedList的父類,是List接口的簡(jiǎn)化版實(shí)現(xiàn)。

簡(jiǎn)介

java.util

類 AbstractSequentialList

java.lang.Object

java.util.AbstractCollection

java.util.AbstractList

java.util.AbstractSequentialList

所有已實(shí)現(xiàn)的接口:

Iterable, Collection, List

直接已知子類:

LinkedList

public abstract class AbstractSequentialListextends AbstractList此類提供了 List 接口的骨干實(shí)現(xiàn),從而最大限度地減少了實(shí)現(xiàn)受“連續(xù)訪問”數(shù)據(jù)存儲(chǔ)(如鏈接列表)支持的此接口所需的工作。對(duì)于隨機(jī)訪問數(shù)據(jù)(如數(shù)組),應(yīng)該優(yōu)先使用 AbstractList,而不是先使用此類。

從某種意義上說,此類與在列表的列表迭代器上實(shí)現(xiàn)“隨機(jī)訪問”方法(get(int index)、set(int index, Object element)、set(int index, Object element)、add(int index, Object element) 和 remove(int index))的 AbstractList 類相對(duì)立,而不是其他關(guān)系。

要實(shí)現(xiàn)一個(gè)列表,程序員只需要擴(kuò)展此類,并提供 listIterator和 size 方法的實(shí)現(xiàn)即可。對(duì)于不可修改的列表,程序員只需要實(shí)現(xiàn)列表迭代器的 hasnext、next、hasPrevious、previous 和 index 方法即可。

對(duì)于可修改的列表,程序員應(yīng)該再另外實(shí)現(xiàn)列表迭代器的 set 方法。對(duì)于可變大小的列表,程序員應(yīng)該再另外實(shí)現(xiàn)列表迭代器的 remove和 add方法。

按照 Collection接口規(guī)范中的推薦,程序員通常應(yīng)該提供一個(gè)void(無參數(shù))構(gòu)造方法和 collection 構(gòu)造方法。

此類是 Java Collections Framework的成員。

版本信息

從以下版本開始:

1.2

另請(qǐng)參見:

Collection, List, AbstractList, AbstractCollection

字段摘要

從類 java.util.AbstractList 繼承的字段

modCount

構(gòu)造方法摘要

protected??AbstractSequentialList()

單獨(dú)的構(gòu)造方法。

方法摘要

void add(int index, E element)

在此列表中的指定位置上插入指定的元素。

boolean addAll(int index, Collection c)

在此列表中指定的位置上插入指定 collection 中的所有元素。

E get(int index)

返回此列表中指定位置上的元素。

Iterator iterator()

返回在此列表中的元素上進(jìn)行迭代的迭代器(按適當(dāng)順序)。

abstract??ListIterator listIterator(int index)

返回在此列表中的元素上進(jìn)行迭代的列表迭代器(按適當(dāng)順序)。

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

構(gòu)造方法詳細(xì)信息

AbstractSequentialList

protected AbstractSequentialList()單獨(dú)的構(gòu)造方法。(由子類構(gòu)造方法調(diào)用,通常是隱式的。)

方法詳細(xì)信息

get

public E get(int index)返回此列表中指定位置上的元素。

此實(shí)現(xiàn)首先獲得一個(gè)指向索引元素的列表迭代器(通過 listIterator(index) 方法)。然后它使用 ListIterator.next 獲得該元素并返回它。

指定者:

接口 List 中的 get

指定者:

類 AbstractList 中的 get

參數(shù):

index - 要返回的元素的索引。

返回:

此列表中指定位置上的元素。

拋出:

IndexOutOfBoundsException- 如果指定的索引超出范圍 (index < 0 || index >= size())。

set

public E set(int index,

E element)用指定的元素替代此列表中指定位置上的元素。

此實(shí)現(xiàn)首先獲得一個(gè)指向索引元素的列表迭代器(通過 listIterator(index) 方法)。然后它使用 ListIterator.next 獲得當(dāng)前元素,并使用 ListIterator.set 替代它。

注意,如果列表迭代器沒有實(shí)現(xiàn) set 操作,則此實(shí)現(xiàn)拋出 UnsupportedOperationException。

指定者:

接口 List 中的 set

覆蓋:

類 AbstractList 中的 set

參數(shù):

index - 要替代的元素的索引。

element - 將存儲(chǔ)在指定位置上的元素。

返回:

以前位于指定位置上的元素。

拋出:

UnsupportedOperationException - 如果此列表不支持 set 操作。

NullPointerException - 此列表不允許 null 元素,并且 c 中的某個(gè)元素為 null。

ClassCastException - 指定元素的類不允許它添加到此列表中。

IllegalArgumentException- 指定元素的某方面不允許它添加到此列表中。

IndexOutOfBoundsException- 索引超出范圍 (index < 0 || index >= size())。

IllegalArgumentException- 如果 fromIndex > toIndex。

add

public void add(int index,

E element)在此列表中的指定位置上插入指定的元素。向右移動(dòng)當(dāng)前位于該位置上的元素(如果有)以及所有后續(xù)元素(將其索引加 1)。

此實(shí)現(xiàn)首先獲得一個(gè)指向索引元素的列表迭代器(通過 listIterator(index) 方法)。然后它使用 ListIterator.add 插入指定的元素。

注意,如果列表迭代器沒有實(shí)現(xiàn) add 操作,則此實(shí)現(xiàn)拋出 UnsupportedOperationException。

指定者:

接口 List 中的 add

覆蓋:

類 AbstractList 中的 add

參數(shù):

index - 指定元素所插入位置的索引。

element - 要插入的元素。

拋出:

UnsupportedOperationException- 如果此列表不支持 add 操作。

NullPointerException- 此列表不允許 null 元素,并且 c 中的某個(gè)元素為 null。

ClassCastException- 如果指定元素的類不允許它添加到此列表中。

IllegalArgumentException- 如果指定元素的某方面不允許它添加到此列表中。

IndexOutOfBoundsException- 如果指定的索引超出范圍 (index < 0 || index > size())。

remove

public E remove(int index)移除此列表中指定位置上的元素。向左移動(dòng)所有后續(xù)元素(將其索引減 1)。

此實(shí)現(xiàn)首先獲得一個(gè)指向索引元素的列表迭代器(通過 listIterator(index) 方法)。然后它使用 ListIterator.remove 移除該元素。

注意,如果列表迭代器沒有實(shí)現(xiàn) remove操作,則此實(shí)現(xiàn)拋出 UnsupportedOperationException。

指定者:

接口 List 中的 remove

覆蓋:

類 AbstractList 中的 remove

參數(shù):

index - 要從列表中移除的元素的索引。

返回:

從列表中移除的元素。

拋出:

UnsupportedOperationException- 如果此列表不支持 remove 操作。

IndexOutOfBoundsException- 如果指定的索引超出范圍 (index < 0 || index > =size())。

addAll

public boolean addAll(int index,

Collection c)在此列表中指定的位置上插入指定 collection 中的所有元素。向右移動(dòng)當(dāng)前位于該位置上的元素(如果有)以及所有后續(xù)元素(增加其索引)。新元素將按指定 collection 的迭代器所返回的順序出現(xiàn)在列表中。如果正在進(jìn)行此操作時(shí)修改指定的 collection,則此操作行為是未指定的。(注意,如果指定的 collection 是此列表并且是非空的,則會(huì)發(fā)生這種情況。)可選操作。

此實(shí)現(xiàn)獲得指定 collection 的迭代器,以及此列表指向索引元素的列表迭代器(通過 listIterator(index) 方法)。然后,它在指定的 collection 上進(jìn)行迭代,通過使用 ListIterator.next 之后緊接著使用 ListIterator.add 方法(以跳過添加的元素),把從迭代器中獲得的元素逐個(gè)插入此列表中。

注意,如果 listIterator 方法返回的列表迭代器沒有實(shí)現(xiàn) add 操作,則此實(shí)現(xiàn)拋出 UnsupportedOperationException。

指定者:

接口 List 中的 addAll

覆蓋:

類 AbstractList 中的 addAll

參數(shù):

index - 插入指定 collection 中第一個(gè)元素的位置索引。

c - 要插入到此列表的元素。

返回:

如果此列表由于此方法的調(diào)用而發(fā)生改變,則返回 true。

拋出:

UnsupportedOperationException - 如果此列表不支持 addAll 操作。

NullPointerException - 如果此列表不允許 null 元素,并且指定 collection 中的某個(gè)元素為 null。

ClassCastException - 如果指定元素的類不允許它添加到此列表中。

IllegalArgumentException - 如果指定元素的某方面不允許它添加到此列表中。

IndexOutOfBoundsException - 如果指定的索引超出范圍 (index < 0 || index > size())。

NullPointerException - 如果指定的 collection 為 null。

iterator

publicIterator iterator()返回在此列表中的元素上進(jìn)行迭代的迭代器(按適當(dāng)順序)。

此實(shí)現(xiàn)僅返回列表的一個(gè)列表迭代器。

指定者:

接口 Iterable 中的 iterator

指定者:

接口 Collection 中的 iterator

指定者:

接口 List 中的 iterator

覆蓋:

類 AbstractList 中的 iterator

返回:

在此列表中的元素上進(jìn)行迭代的迭代器(按適當(dāng)順序)。

另請(qǐng)參見:

AbstractList.modCount

listIterator

public abstractListIterator listIterator(int index)返回在此列表中的元素上進(jìn)行迭代的列表迭代器(按適當(dāng)順序)。

指定者:

接口List 中的 listIterator

覆蓋:

類 AbstractList 中的 listIterator

參數(shù):

index - 從列表迭代器返回(通過調(diào)用 next 方法)的第一個(gè)元素的索引

返回:

在此列表中的元素上進(jìn)行迭代的列表迭代器(按適當(dāng)順序)。

另請(qǐng)參見:

AbstractList.modCount