ArrayList 有三個(gè)構(gòu)造方法
//構(gòu)造一個(gè)具有指定初始容量的空列表
public ArrayList(intinitialCapacity)
//構(gòu)造一個(gè)初始容量為 10 的空列表
public ArrayList()
//構(gòu)造一個(gè)包含指定 collection 的元素的列表
public ArrayList(Collection<? extends E> c)
Vector 有四個(gè)構(gòu)造方法
//使用指定的初始容量和等于零的容量增量構(gòu)造一個(gè)空向量
public Vector()
//構(gòu)造一個(gè)空向量亏掀,使其內(nèi)部數(shù)據(jù)數(shù)組的大小鲤孵,其標(biāo)準(zhǔn)容量增量為零叶摄。
public Vector(int initialCapacity)
//構(gòu)造一個(gè)包含指定 collection 中的元素的向量
public Vector(Collection<? extends E> c)
//使用指定的初始容量和容量增量構(gòu)造一個(gè)空的向量
public Vector(int initialCapacity, int capacityIncrement)
ArrayList 和 Vector 都是用數(shù)組實(shí)現(xiàn)的主要有這么四個(gè)區(qū)別:
- Vector 是多線程安全的薪夕,線程安全就是說多線程訪問代碼隅肥,不會(huì)產(chǎn)生不確定的結(jié)果氮兵。而 ArrayList 不是语卤,這可以從源碼中看出挤忙,Vector 類中的方法很多有 synchronied 進(jìn)行修飾霜威,這樣就導(dǎo)致了 Vector 在效率上無法與 ArrayLst 相比;
- 兩個(gè)都是采用的線性連續(xù)空間存儲(chǔ)元素册烈,但是當(dāng)空間充足的時(shí)候戈泼,兩個(gè)類的增加方式是不同。
- Vector 可以設(shè)置增長因子赏僧,而 ArrayList 不可以大猛。
- Vector 是一種老的動(dòng)態(tài)數(shù)組,是線程同步的淀零,效率很低挽绩,一般不贊成使用。
適用場(chǎng)景:
- Vector 是線程同步的驾中,所以它也是線程安全的唉堪,而 ArraList 是線程異步的,是不安全的肩民。如果不考慮到線程的安全因素唠亚,一般用 ArrayList 效率比較高。
- 如果集合中的元素的數(shù)目大于目前集合數(shù)組的長度時(shí)持痰,在集合中使用數(shù)據(jù)量比較大的數(shù)據(jù)趾撵,用 Vector 有一定的優(yōu)勢(shì)。