ArrayList
1、ArrayList 是一個(gè)數(shù)組隊(duì)列,相當(dāng)于動(dòng)態(tài)數(shù)組,為線程不安全。
2、繼承了AbstractList,實(shí)現(xiàn)了List,提供了添加、刪除、修改、遍歷等功能。
3、實(shí)現(xiàn)了RandmoAccess接口,提供了隨機(jī)訪問功能。
4、ArrayList通過一個(gè)數(shù)組去保存數(shù)據(jù)的,默認(rèn)容量大小是10,當(dāng)ArrayList容量不足以容納全部元素時(shí),ArrayList會(huì)重新設(shè)置容量:新的容量=“(原始容量x3)/2 + 1”。
LinkedList
1、LinkedList 是一個(gè)繼承于AbstractSequentialList的雙向鏈表,提供了隨機(jī)訪問功能,順序訪問會(huì)非常高效,而隨機(jī)訪問效率比較低。,它也可以被當(dāng)作堆棧、隊(duì)列或雙端隊(duì)列進(jìn)行操作,為線程不安全。
2、實(shí)現(xiàn)了List,提供了添加、刪除、修改、遍歷等功能。
3、實(shí)現(xiàn)Deque接口,即能將LinkedList當(dāng)作雙端隊(duì)列使用。
4、索引的原理是比較“l(fā)ocation”和“雙向鏈表長(zhǎng)度的1/2”;若前者大,則從鏈表頭開始往后查找,直到location位置;否則,從鏈表末尾開始先前查找,直到location位置。
Vector
Vector與ArrayList一樣,也是通過數(shù)組實(shí)現(xiàn)的,不同的是它支持線程的同步,即某一時(shí)刻只有一個(gè)線程能夠?qū)慥ector,避免多線程同時(shí)寫而引起的不一致性,但實(shí)現(xiàn)同步需要很高的花費(fèi),因此,訪問它比訪問ArrayList慢。
總結(jié):
ArrayList 是一個(gè)數(shù)組隊(duì)列,相當(dāng)于動(dòng)態(tài)數(shù)組。它由數(shù)組實(shí)現(xiàn),隨機(jī)訪問效率高,隨機(jī)插入、隨機(jī)刪除效率低。
LinkedList 是一個(gè)雙向鏈表。它也可以被當(dāng)作堆棧、隊(duì)列或雙端隊(duì)列進(jìn)行操作。LinkedList隨機(jī)訪問效率低,但隨機(jī)插入、隨機(jī)刪除效率高。
Vector 是矢量隊(duì)列,和ArrayList一樣,它也是一個(gè)動(dòng)態(tài)數(shù)組,由數(shù)組實(shí)現(xiàn)。但是ArrayList是非線程安全的,而Vector是線程安全的。