JavaTM 2 Platform
Standard Ed. 6

java.util
类 AbstractSequentialList<E>

java.lang.Object
  继承者 java.util.AbstractCollection<E>
      继承者 java.util.AbstractList<E>
          继承者 java.util.AbstractSequentialList<E>
所有已实现的接口:
Iterable<E>, Collection<E>, List<E>
直接已知子类:
LinkedList

public abstract class AbstractSequentialList<E>
extends AbstractList<E>

此类提供了 List 接口的骨干实现,从而最大限度地减少了实现受“连续访问”数据存储(如链接列表)支持的此接口所需的工作。对于随机访问数据(如数组),应该优先使用 AbstractList,而不是先使用此类。

从某种意义上说,此类与在列表的列表迭代器上实现“随机访问”方法(get(int index)set(int index, E element)add(int index, E element)remove(int index))的 AbstractList 类相对立,而不是其他关系。

要实现一个列表,程序员只需要扩展此类,并提供 listIteratorsize 方法的实现即可。对于不可修改的列表,程序员只需要实现列表迭代器的 hasNextnexthasPreviouspreviousindex 方法即可。

对于可修改的列表,程序员应该再另外实现列表迭代器的 set 方法。对于可变大小的列表,程序员应该再另外实现列表迭代器的 removeadd 方法。

按照 Collection 接口规范中的推荐,程序员通常应该提供一个 void(无参数)构造方法和 collection 构造方法。

此类是 Java Collections Framework 的成员。

从以下版本开始:
1.2
另请参见:
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
 

构造方法详细信息

AbstractSequentialList

protected AbstractSequentialList()
单独的构造方法。(由子类构造方法调用,通常是隐式的。)

方法详细信息

get

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

此实现首先获得一个指向索引元素的列表迭代器(通过 listIterator(index) 方法)。然后它使用 ListIterator.next 获得该元素并返回它。

指定者:
接口 List<E> 中的 get
指定者:
AbstractList<E> 中的 get
参数:
index - 要返回的元素的索引
返回:
列表中指定位置的元素
抛出:
IndexOutOfBoundsException - 如果索引超出范围 (index < 0 || index >= size())

set

public E set(int index,
             E element)
用指定的元素替代此列表中指定位置上的元素(可选操作)。

此实现首先获得一个指向索引元素的列表迭代器(通过 listIterator(index) 方法)。然后它使用 ListIterator.next 获得当前元素,并使用 ListIterator.set 替代它。

注意,如果该列表迭代器没有实现 set 操作,则此实现将抛出 UnsupportedOperationException

指定者:
接口 List<E> 中的 set
覆盖:
AbstractList<E> 中的 set
参数:
index - 要替换的元素的索引
element - 要在指定位置存储的元素
返回:
以前在指定位置的元素
抛出:
UnsupportedOperationException - 如果列表不支持 set 操作
ClassCastException - 如果指定元素的类不允许它添加到此列表
NullPointerException - 如果指定的元素为 null,并且此列表不允许 null 元素
IllegalArgumentException - 如果指定元素的某些属性不允许它添加到此列表
IndexOutOfBoundsException - 如果索引超出范围 (index < 0 || index >= size())

add

public void add(int index,
                E element)
在此列表中的指定位置上插入指定的元素(可选操作)。向右移动当前位于该位置上的元素(如果有)以及所有后续元素(将其索引加 1)。

此实现首先获得一个指向索引元素的列表迭代器(通过 listIterator(index))。然后它使用 ListIterator.add 插入指定的元素。

注意,如果列表迭代器没有实现 add 操作,则此实现将抛出 UnsupportedOperationException

指定者:
接口 List<E> 中的 add
覆盖:
AbstractList<E> 中的 add
参数:
index - 要在其中插入指定元素处的索引
element - 要插入的元素
抛出:
UnsupportedOperationException - 如果列表不支持 add 操作
ClassCastException - 如果指定元素的类不允许它添加到此列表
NullPointerException - 如果指定的元素为 null,并且此列表不允许 null 元素
IllegalArgumentException - 如果指定元素的某些属性不允许它添加到此列表
IndexOutOfBoundsException - 如果索引超出范围 (index < 0 || index > size())

remove

public E remove(int index)
移除此列表中指定位置上的元素(可选操作)。向左移动所有后续元素(将其索引减 1)。返回从列表中移除的元素。

此实现首先获得一个指向索引元素的列表迭代器(通过 listIterator(index) 方法)。然后它使用 ListIterator.remove 移除该元素。

注意,如果该列表迭代器没有实现 remove 操作,则此实现将抛出 UnsupportedOperationException

指定者:
接口 List<E> 中的 remove
覆盖:
AbstractList<E> 中的 remove
参数:
index - 要移除的元素的索引
返回:
以前在指定位置的元素
抛出:
UnsupportedOperationException - 如果列表不支持 remove 操作
IndexOutOfBoundsException - 如果索引超出范围 (index < 0 || index >= size())

addAll

public boolean addAll(int index,
                      Collection<? extends E> c)
在此列表中指定的位置上插入指定 collection 中的所有元素(可选操作)。向右移动当前位于该位置上的元素(如果有)以及所有后续元素(增加其索引)。新元素将按指定 collection 的迭代器所返回的顺序出现在列表中。如果正在进行此操作时修改指定的 collection,则此操作行为是未指定的。(注意,如果指定的 collection 是此列表并且是非空的,则会发生这种情况。)

此实现获得指定 collection 的迭代器,以及此列表指向索引元素的列表迭代器(通过 listIterator(index) 方法)。然后,它在指定的 collection 上进行迭代,通过使用 ListIterator.next 之后紧接着使用 ListIterator.add 方法(以跳过添加的元素),把从迭代器中获得的元素逐个插入此列表中。

注意,如果 listIterator 方法返回的列表迭代器没有实现 add 操作,则此实现将会抛出 UnsupportedOperationException

指定者:
接口 List<E> 中的 addAll
覆盖:
AbstractList<E> 中的 addAll
参数:
index - 将指定 collection 的第一个元素所插入位置的索引
c - 包含要添加到此列表的元素的 collection
返回:
如果此列表由于调用而发生更改,则返回 true
抛出:
UnsupportedOperationException - 如果列表不支持 addAll 操作
ClassCastException - 如果指定 collection 中某个元素的类不允许它添加到此列表
NullPointerException - 如果指定的 collection 包含一个或多个 null 元素,并且该列表不允许 null 元素,或者指定的 collection 为 null
IllegalArgumentException - 如果指定 collection 的元素的某些属性不允许它添加到此列表
IndexOutOfBoundsException - 如果索引超出范围 (index < 0 || index > size())

iterator

public Iterator<E> iterator()
返回在此列表中的元素上进行迭代的迭代器(按适当顺序)。

此实现仅返回列表的一个列表迭代器。

指定者:
接口 Iterable<E> 中的 iterator
指定者:
接口 Collection<E> 中的 iterator
指定者:
接口 List<E> 中的 iterator
覆盖:
AbstractList<E> 中的 iterator
返回:
在此列表中的元素上进行迭代的迭代器(按适当顺序)
另请参见:
AbstractList.modCount

listIterator

public abstract ListIterator<E> listIterator(int index)
返回在此列表中的元素上进行迭代的列表迭代器(按适当顺序)。

指定者:
接口 List<E> 中的 listIterator
覆盖:
AbstractList<E> 中的 listIterator
参数:
index - 从列表迭代器返回(通过调用 next 方法)的第一个元素的索引
返回:
在此列表中的元素上进行迭代的列表迭代器(按适当顺序)
抛出:
IndexOutOfBoundsException - 如果索引超出范围 (index < 0 || index > size())
另请参见:
AbstractList.modCount

JavaTM 2 Platform
Standard Ed. 6

提交错误或意见

版权所有 2008 Sun Microsystems, Inc. 保留所有权利。请遵守GNU General Public License, version 2 only