|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.util
类 AbstractList<E>
java.lang.Object java.util.AbstractCollection<E> java.util.AbstractList<E>
- 所有已实现的接口:
- Iterable<E>, Collection<E>, List<E>
- 直接已知子类:
- AbstractSequentialList, ArrayList, Vector
-
public abstract class AbstractList<E>
- extends AbstractCollection<E>
- implements List<E>
此类提供 List 接口的骨干实现,从而最大限度地减少了实现由“随机访问”数据存储(如数组)支持的接口所需的工作。对于连续的访问数据(如链表),应优先使用 AbstractSequentialList,而非此类。
要实现不可修改的列表,程序员只需扩展此类,并提供 get(int index) 和 size() 方法的实现。
要实现可修改的列表,程序员还必须另外重写 set(int index, Object element) 方法,否则将抛出 UnsupportedOperationException。如果列表为可变大小,则程序员必须另外重写 add(int index, Object element) 和 remove(int index) 方法。
按照 Collection 接口规范中的推荐,程序员通常应该提供一个 void (无参数)和 collection 构造方法。
与其他抽象 collection 实现不同,程序员不必 提供迭代器实现;迭代器和列表迭代器由此类在以下“随机访问”方法之上实现:get(int index)、set(int index, Object element)、set(int index, Object element)、add(int index, Object element) 和 remove(int index)。
此类中每个非抽象方法的文档详细描述了其实现。如果要实现的 collection 允许更有效的实现,则可以重写这些方法中的每个方法。
此类是 Java Collections Framework 的成员。
- 从以下版本开始:
- 1.2
- 另请参见:
-
Collection
,List
,AbstractSequentialList
,AbstractCollection
字段摘要 | |
---|---|
protected int |
modCount 已从结构上修改 此列表的次数。 |
构造方法摘要 | |
---|---|
protected |
AbstractList() 单独的构造方法。 |
方法摘要 | |
---|---|
boolean |
add(E o) 将指定的元素追加到此 List 的尾部(可选操作)。 |
void |
add(int index, E element) 在此列表中指定的位置插入指定的元素(可选操作)。 |
boolean |
addAll(int index, Collection<? extends E> c) 将指定 collection 中的所有元素插入此列表的指定位置(可选操作)。 |
void |
clear() 从此 collection 中移除所有元素(可选操作)。 |
boolean |
equals(Object o) 将指定的对象与此列表进行相等性比较。 |
abstract E |
get(int index) 返回此列表中指定位置处的元素。 |
int |
hashCode() 返回此列表的哈希码值。 |
int |
indexOf(Object o) 返回此列表中首次出现指定元素的索引,如果列表中不包含此元素,则返回 -1。 |
Iterator<E> |
iterator() 返回以正确顺序在此列表的元素上进行迭代的迭代器。 |
int |
lastIndexOf(Object o) 返回此列表中最后出现指定元素的索引,如果列表中不包含此元素,则返回 -1。 |
ListIterator<E> |
listIterator() 返回此列表中的元素的迭代器(按适当顺序)。 |
ListIterator<E> |
listIterator(int index) 从列表中的指定位置开始,返回此列表中的元素的列表迭代器(按适当顺序)。 |
E |
remove(int index) 移除此列表中指定位置处的元素(可选操作)。 |
protected void |
removeRange(int fromIndex, int toIndex) 从此列表中移除其索引在 fromIndex(包括)和 toIndex(不包括)之间的所有元素。 |
E |
set(int index, E element) 将此列表中指定位置的元素替换为指定的元素(可选操作)。 |
List<E> |
subList(int fromIndex, int toIndex) 返回此列表 fromIndex(包括)和 toIndex(不包括)之间部分的视图。 |
从类 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 |
字段详细信息 |
---|
modCount
protected transient int modCount
-
已从结构上修改 此列表的次数。从结构上修改是指更改列表的大小,或者以其他方式打乱列表,使正在进行的迭代产生错误的结果。
此字段由 iterator 和 listIterator 方法返回的迭代器和列表迭代器实现来使用。如果意外更改了此字段中的值,则迭代器(或列表迭代器)将抛出 ConcurrentModificationException 来响应 next、remove、previous、set 或 add 操作。在迭代期间面临并发修改时,它提供了快速失败 行为,而不是非确定性行为。
子类是否使用此字段是可选的。如果子类希望提供快速失败迭代器(和列表迭代器),则它只需在其 add(int, Object) 和 remove(int) 方法(以及它所重写的、导致列表结构上修改的任何其他方法)中增加此字段。对 add(int, Object) 或 remove(int) 的单个调用向此字段添加的数量不得超过 1,否则迭代器(和列表迭代器)将抛出虚假的 ConcurrentModificationExceptions。如果某个实现不希望提供快速失败迭代器,则可以忽略此字段。
构造方法详细信息 |
---|
AbstractList
protected AbstractList()
- 单独的构造方法。(由子类构造方法调用,通常是隐式的。)
方法详细信息 |
---|
add
public boolean add(E o)
-
将指定的元素追加到此 List 的尾部(可选操作)。
此实现调用 add(size(), o)。
注意,除非重写 add(int, Object),否则此实现将抛出 UnsupportedOperationException。
-
- 指定者:
-
接口
Collection<E>
中的add
- 指定者:
-
接口
List<E>
中的add
- 覆盖:
-
类
AbstractCollection<E>
中的add
-
- 参数:
-
o
- 要追加到此列表的元素。 - 返回:
- true(按照 Collection.add 的常规协定)。
- 抛出:
-
UnsupportedOperationException
- 如果此 Set 不支持 add 方法。 -
ClassCastException
- 如果指定元素的类不允许该元素添加到此 set 中。 -
IllegalArgumentException
- 此元素的某方面不允许它添加到此 collection 中。
get
public abstract E get(int index)
- 返回此列表中指定位置处的元素。
-
- 参数:
-
index
- 要返回的元素的索引。 - 返回:
- 列表中指定位置的元素。
- 抛出:
-
IndexOutOfBoundsException
- 如果给定的索引超出范围 (index < 0 || index >= size())。
set
public E set(int index, E element)
-
将此列表中指定位置的元素替换为指定的元素(可选操作)。
此实现始终抛出 UnsupportedOperationException。
-
- 参数:
-
index
- 要替换的元素的索引。 -
element
- 要存储在指定位置的元素。 - 返回:
- 以前在指定位置处的元素。
- 抛出:
-
UnsupportedOperationException
- 如果此 List 不支持 set 方法。 -
ClassCastException
- 如果指定元素的类不允许该元素添加到此列表。 -
IllegalArgumentException
- 如果指定元素的某方面不允许它添加到此列表。 -
IndexOutOfBoundsException
- 如果指定的索引超出范围 (index < 0 || index >= size())。
add
public void add(int index, E element)
-
在此列表中指定的位置插入指定的元素(可选操作)。向右移动当前处于该位置的元素(如果有)和所有后续元素(将其索引加 1)。
此实现始终抛出 UnsupportedOperationException。
-
- 参数:
-
index
- 要插入指定元素的位置索引。 -
element
- 要插入的元素。 - 抛出:
-
UnsupportedOperationException
- 如果此 List 不支持 add 方法。 -
ClassCastException
- 如果指定元素的类不允许该元素添加到此列表。 -
IllegalArgumentException
- 如果指定元素的某方面不允许它添加到此列表。 -
IndexOutOfBoundsException
- 索引超出范围 (index < 0 || index > size())。
remove
public E remove(int index)
-
移除此列表中指定位置处的元素(可选操作)。向左移动所有后续元素(将其索引减 1)。返回从列表中移除的元素。
此实现始终抛出 UnsupportedOperationException。
-
- 参数:
-
index
- 要移除的元素的索引。 - 返回:
- 以前在指定位置处的元素。
- 抛出:
-
UnsupportedOperationException
- 如果此 List 不支持 remove 方法。 -
IndexOutOfBoundsException
- 如果指定的索引超出范围 (index < 0 || index >= size())。
indexOf
public int indexOf(Object o)
-
返回此列表中首次出现指定元素的索引,如果列表中不包含此元素,则返回 -1。更正式地说,返回满足以下条件的最低索引 i:(o==null ? get(i)==null :o.equals(get(i))),如果没有满足此条件的索引,则返回 -1。
此实现首先获取一个列表迭代器(使用 listIterator())。然后它迭代列表,直至找到指定的元素,或者到达列表的末尾。
-
- 参数:
-
o
- 要搜索的元素。 - 返回:
- 此列表中首次出现指定元素的索引,如果列表中不包含此元素,则返回 -1。
lastIndexOf
public int lastIndexOf(Object o)
-
返回此列表中最后出现指定元素的索引,如果列表中不包含此元素,则返回 -1。更正式地说,返回满足以下条件的最高索引 i:(o==null ? get(i)==null :o.equals(get(i))),如果没有满足此条件的此索引,则返回 -1。
此实现首先获取一个指向列表末尾的列表迭代器(使用 listIterator(size()))。然后它反向迭代列表,直至找到指定的元素,或者到达列表的开头。
-
- 指定者:
-
接口
List<E>
中的lastIndexOf
-
- 参数:
-
o
- 要搜索的元素。 - 返回:
- 此列表中最后出现指定元素的索引,如果列表中不包含此元素,则返回 -1。