天天看點

Java-ArrayList

ArrayList就是動态數組,用MSDN中的說法,就是Array的複雜版本,它提供了動态的增加和減少元素,實作了ICollection和IList接口,靈活的設定數組的大小等好處

ArrayList封裝了一系列操作,如增删改查,對比使用傳統的數組友善了很多,因為java代碼已經替我們寫好了,我們直接用即可。

一、構造方法:

(1)無參構造器:傳回一個初始容量為0的空清單,擴容是在第一次add的時候進行的

(2)傳入一個 ​<code>​int類型​</code>​ 的有參構造器:傳回一個以你傳入的參數作為初始容量的空清單

(3)構造一個包含指定 collection 的元素的清單,這些元素是按照該 collection 的疊代器傳回它們的順序排列的。

二、常用方法:

以實作List接口為例:

Java-ArrayList

(1)ArrayList中維護了一個Object類型的數組 elementData

(2)當建立ArrayList對象時,如果使用的是無參構造器,則初始elementData容量為0,第一次add,則擴容為10,如果後續再次需要擴容,則擴容為原容量的1.5倍(看源碼,有移位操作)

(3)如果使用的是指定大小的構造器,則初始容量為指定的大小,如果後續需要擴容,則擴容為1.5倍。

ArrayList類的相關方法和屬性:

無參構造器第一次 add:

無參構造器第十一次add:

有參構造器:

注意使用有參構造器傳入參數0和使用無參構造器的差別:

擴容方法:(​​Arrays.copyOf()方法詳解-jdk1.8​​)