public class ArrayList<E> extends AbstractList<E>i mplements List<E>, RandomAccess, Cloneable, Serializable
ArrayList是一个实现了List 接口的大小可变的array。实现了所有可选list操作,并包含了允许 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作array的大小,这里的array大小指内部用来存储list的大小。(此类大致上等同于 Vector 类,除了此类是不同步的。)
这些操作如size、isEmpty、get、set、iterator 和 listIterator 都以固定时间运行(run in constant time)。add 操作以分摊的固定时间运行,也就是说,添加 n 个元素需要 O(n) 时间。其他所有操作都以线性时间运行(大体上讲)。与用于 LinkedList 实现的常数因子相比,此实现的常数因子较低。
每个 ArrayList 实例都有一个容量。该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小。随着向 ArrayList 中不断添加元素,其容量也自动增长。并未指定增长策略的细节,因为这不只是添加元素会带来分摊固定时间开销那样简单。
ArrayList中只能存放对象,并且取值时是运行时判断而非编译时判断,即只有在运行时才能知道想要获取的对象和真正取出来的对象是否一致,是否会抛出异常。
几个特殊方法:
void add(int index, E element)
将指定的元素插入此列表中的指定位置。
boolean addAll(int index, Collection<? extends E> c)
从指定的位置开始,将指定 collection 中的所有元素插入到此列表中。
boolean remove(Object o)
移除此列表中首次出现的指定元素(如果存在)。
protected void removeRange(int fromIndex, int toIndex)
移除列表中索引在 fromIndex(包括)和 toIndex(不包括)之间的所有元素。
原文地址:http://zlfwmm.blog.51cto.com/5892198/1705432