ArrayList
ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存。
ArrayList不是线程安全的,只能用在单线程环境下,多线程环境下可以考虑用Collections.synchronizedList(List l)函数返回一个线程安全的ArrayList类,也可以使用concurrent并发包下的CopyOnWriteArrayList类。
以下分析的是JDK1.8的ArrayList源码,跟JDK1.7的区别还是蛮大的。
一、定义
public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable
从ArrayList\可以看出它是支持泛型的,它继承自AbstractList,实现了List、RandomAccess、Cloneable、Java.io.Serializable接口
AbstractList提供了List接口的默认实现(个别方法为抽象方法)
List接口定义了列表必须实现的方法
RandomAccess是一个标记接口,接口内没有定义任何内容,支持快速随机访问,实际上就是通过下标序号进行快速访问
实现了Cloneable接口的类,可以调用Object.clone方法返回该对象的浅拷贝
通过实现 java.io.Seriali