在The javaPRogramming Language (Addison-Wesley, June 2000) 中Ken Arnold, James Gosling, 和 David Holmes 是這樣描述Vector的,它是更ArrayList類似的一個(gè)東西,所以從API的觀點(diǎn)來看,它們倆是很相似的。但是,它們之間還是有些微的差別的。
實(shí)際上,不管是ArrayList還是Vector,在它們內(nèi)部都是使用一個(gè)Array來保存數(shù)據(jù)的。編程過程中,在使用它們?nèi)魏我粋€(gè)的時(shí)候,你都需要記住這一點(diǎn)。你在往一個(gè)ArrayList或者Vector里插入一個(gè)元素的時(shí)候,假如內(nèi)部數(shù)組空間不夠了,這個(gè)對象(譯者按:指的是你使用的ArrayList或者Vector)就要擴(kuò)展它的大小。Vector在默認(rèn)情況下是產(chǎn)生一個(gè)雙倍大小,而ArrayList增加50%的大小。只要你合理的使用這些類,你就可以結(jié)束你在增加新的元素的時(shí)候所付出的性能代價(jià)。把對象(譯者按:指的是你使用的ArrayList或者Vector)的初始化容量指定為你編程過程中所能用到的最大的容量總是最好的辦法。仔細(xì)的指定容量,你可以避免以后改變內(nèi)部Array容量,所要付出的代價(jià)。假如你并不知道到底有多少個(gè)數(shù)據(jù),當(dāng)是你知道數(shù)據(jù)的增長率,Vector確實(shí)有一點(diǎn)點(diǎn)優(yōu)勢,因?yàn)槟憧梢灾付ㄔ黾又?譯者按,假如沒有猜錯(cuò)的話,作者說的方法應(yīng)該是setSize(int newSize) Sets the size of this vector.)。