ArrayList就是動态數組,用MSDN中的說法,就是Array的複雜版本,它提供了動态的增加和減少元素,實作了ICollection和IList接口,靈活的設定數組的大小等好處
ArrayList封裝了一系列操作,如增删改查,對比使用傳統的數組友善了很多,因為java代碼已經替我們寫好了,我們直接用即可。
一、構造方法:
(1)無參構造器:傳回一個初始容量為0的空清單,擴容是在第一次add的時候進行的
(2)傳入一個 <code>int類型</code> 的有參構造器:傳回一個以你傳入的參數作為初始容量的空清單
(3)構造一個包含指定 collection 的元素的清單,這些元素是按照該 collection 的疊代器傳回它們的順序排列的。
二、常用方法:
以實作List接口為例:

(1)ArrayList中維護了一個Object類型的數組 elementData
(2)當建立ArrayList對象時,如果使用的是無參構造器,則初始elementData容量為0,第一次add,則擴容為10,如果後續再次需要擴容,則擴容為原容量的1.5倍(看源碼,有移位操作)
(3)如果使用的是指定大小的構造器,則初始容量為指定的大小,如果後續需要擴容,則擴容為1.5倍。
ArrayList類的相關方法和屬性:
無參構造器第一次 add:
無參構造器第十一次add:
有參構造器:
注意使用有參構造器傳入參數0和使用無參構造器的差別:
擴容方法:(Arrays.copyOf()方法詳解-jdk1.8)