collection函數庫:包含接口和類;接口是訪問數據的方式,類用來產生對象存放數據。數組
與數組的區別:1.容量能夠自動調節;2.存放的元素能夠是不一樣的數據類型;3.只能存放引用數據類型。安全
collection接口是根接口:定義了存取對象的方法;數據結構
它的子接口set接口和list接口分別定義了存儲方式:函數
set接口:元素是不可重複並且無序的;spa
List接口:元素是有序(指存入順序和取出順序一致)且能夠重複的。.net
list接口主要實現類:線程
ArrayListcode
add(E e)
的基本實現了:對象
首先去檢查一下數組的容量是否足夠blog
不足夠:擴容
與擴容相關ArrayList的add方法底層其實都是arraycopy()
來實現的
看到arraycopy()
,咱們能夠發現:該方法是由C/C++來編寫的,並非由Java實現:連接:https://blog.csdn.net/wike163/article/details/6635321
LinkedList
Vector
在要求非同步的狀況下,咱們通常都是使用ArrayList來替代Vector的了~
若是想要ArrayList實現同步,可使用Collections的方法:List list = Collections.synchronizedList(new ArrayList(...));
,就能夠實現同步了~
還有另外一個區別: