标签:mac 实现 方法 str fast 有一个 ransient 执行 one
ArrayList是实现了List接口的可变长数组(ArrayList的底层是基于数组实现的)
ArrayList允许内部存在null元素
ArrayList除了不是线程安全的之外,和Vector基本差不多。(如果想使用线程安全的ArrayList:List list = Collections.synchronizedList(new ArrayList(...));或者使用CopyOnWriteArrayList
size、isEmpty、get、set、iterator和listIterator方法都以固定时间运行,时间复杂度为O(1)。add和remove方法需要O(n)时间。与用于LinkedList实现的常数因子相比,此实现的常数因子较低。
每个ArrayList实例都有一个capacity属性,随着元素不断add到ArrayList,capacity会自动增加
在添加大量元素之前,可以使用ensureCapacity操作来增加ArrayList的容量,这可以减少递增的重新分配次数
ArrayList的iterator和listIterator方法返回的迭代器是fail-fast的。
fail-fast不能保证一定会被执行的,所以依赖于fail-fast抛出的异常的程序都是错误的写法。fail-fast抛出的异常只能用来帮你detect bugs
public class ArrayList<E> extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable
继承于AbstractList类,AbstractList提供了List接口的骨干实现,以最大程度减少随机访问ArrayList所需的工作
实现了RandomAccess接口,这是个Marker Interface,用来表示List支持常数时间内的快速随机访问,用index去遍历实现了RandomAccess接口的类是要比用iterator遍历快的
+实现了Cloneable接口,表明其可以调用clone()方法来返回实例的field-for-field拷贝
标签:mac 实现 方法 str fast 有一个 ransient 执行 one
原文地址:https://www.cnblogs.com/swifthao/p/12925739.html