ArrayList

 ArrayList是基于數(shù)組實(shí)現(xiàn)的,是一個(gè)動(dòng)態(tài)數(shù)組,其容量能自動(dòng)增長(zhǎng),類(lèi)似于C語(yǔ)言中的動(dòng)態(tài)申請(qǐng)內(nèi)存,動(dòng)態(tài)增長(zhǎng)內(nèi)存。

 ArrayList不是線程安全的,只能用在單線程環(huán)境下,多線程環(huán)境下可以考慮用Collections.synchronizedList(List l)函數(shù)返回一個(gè)線程安全的ArrayList類(lèi),也可以使用concurrent并發(fā)包下的CopyOnWriteArrayList類(lèi)。

以下分析的是JDK1.8ArrayList源碼,跟JDK1.7的區(qū)別還是蠻大的。

一、定義

public class ArrayList<E> extends AbstractList<E>
        implements List<E>, RandomAccess, Cloneable, java.io.Serializable
  • ArrayList\可以看出它是支持泛型的,它繼承自AbstractList,實(shí)現(xiàn)了ListRandomAccess、Cloneable、Java.io.Serializable接口

  • AbstractList提供了List接口的默認(rèn)實(shí)現(xiàn)(個(gè)別方法為抽象方法)

  • List接口定義了列表必須實(shí)現(xiàn)的方法

  • RandomAccess是一個(gè)標(biāo)記接口,接口內(nèi)沒(méi)有定義任何內(nèi)容,支持快速隨機(jī)訪問(wèn),實(shí)際上就是通過(guò)下標(biāo)序號(hào)進(jìn)行快速訪問(wèn)

  • 實(shí)現(xiàn)了Cloneable接口的類(lèi),可以調(diào)用Object.clone方法返回該對(duì)象的淺拷貝

  • 通過(guò)實(shí)現(xiàn) java.io.Seriali

    網(wǎng)友評(píng)論