所有类


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
从结构上修改 此列表的次数。从结构上修改是指更改列表的大小,或者以其他方式打乱列表,使正在进行的迭代产生错误的结果。

此字段由 iteratorlistIterator 方法返回的迭代器和列表迭代器实现来使用。如果意外更改了此字段中的值,则迭代器(或列表迭代器)将抛出 ConcurrentModificationException 来响应 nextremoveprevioussetadd 操作。在迭代期间面临并发修改时,它提供了快速失败 行为,而不是非确定性行为。

子类是否使用此字段是可选的。如果子类希望提供快速失败迭代器(和列表迭代器),则它只需在其 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)
返回此列表中指定位置处的元素。

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

set

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

此实现始终抛出 UnsupportedOperationException

指定者:
接口 List<E> 中的 set
参数:
index - 要替换的元素的索引。
element - 要存储在指定位置的元素。
返回:
以前在指定位置处的元素。
抛出:
UnsupportedOperationException - 如果此 List 不支持 set 方法。
ClassCastException - 如果指定元素的类不允许该元素添加到此列表。
IllegalArgumentException - 如果指定元素的某方面不允许它添加到此列表。
IndexOutOfBoundsException - 如果指定的索引超出范围 (index < 0 || index >= size())。

add

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

此实现始终抛出 UnsupportedOperationException。

指定者:
接口 List<E> 中的 add
参数:
index - 要插入指定元素的位置索引。
element - 要插入的元素。
抛出:
UnsupportedOperationException - 如果此 List 不支持 add 方法。
ClassCastException - 如果指定元素的类不允许该元素添加到此列表。
IllegalArgumentException - 如果指定元素的某方面不允许它添加到此列表。
IndexOutOfBoundsException - 索引超出范围 (index < 0 || index > size())。

remove

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

此实现始终抛出 UnsupportedOperationException

指定者:
接口 List<E> 中的 remove
参数:
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())。然后它迭代列表,直至找到指定的元素,或者到达列表的末尾。

指定者:
接口 List<E> 中的 indexOf
参数:
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。

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部