ArrayList
ArrayList是基于數(shù)組實現(xiàn)的,是一個動態(tài)數(shù)組,其容量能自動增長,類似于C語言中的動態(tài)申請內(nèi)存,動態(tài)增長內(nèi)存。
ArrayList不是線程安全的,只能用在單線程環(huán)境下,多線程環(huán)境下可以考慮用Collections.synchronizedList(List l)函數(shù)返回一個線程安全的ArrayList類,也可以使用concurrent并發(fā)包下的CopyOnWriteArrayList類。
以下分析的是JDK1.8的ArrayList源碼,跟JDK1.7的區(qū)別還是蠻大的。
一、定義
public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable
從ArrayList\可以看出它是支持泛型的,它繼承自AbstractList,實現(xiàn)了List、RandomAccess、Cloneable、Java.io.Serializable接口
AbstractList提供了List接口的默認實現(xiàn)(個別方法為抽象方法)
List接口定義了列表必須實現(xiàn)的方法
RandomAccess是一個標記接口,接口內(nèi)沒有定義任何內(nèi)容,支持快速隨機訪問,實際上就是通過下標序號進行快速訪問
實現(xiàn)了Cloneable接口的類,可以調(diào)用Object.clone方法返回該對象的淺拷貝
通過實現(xiàn) java.io.Seriali