Java中Vector和ArrayList的區(qū)別

首先看這兩類都實現(xiàn)List接口截亦,而List接口一共有三個實現(xiàn)類肮疗,分別是ArrayList晶姊、Vector和LinkedList。List用于存放多個元素伪货,能夠維護(hù)元素的次序们衙,并且允許元素的重復(fù)。3個具體實現(xiàn)類的相關(guān)區(qū)別如下:

1. ArrayList是最常用的List實現(xiàn)類碱呼,內(nèi)部是通過數(shù)組實現(xiàn)的蒙挑,它允許對元素進(jìn)行快速隨機(jī)訪問。數(shù)組的缺點是每個元素之間不能有間隔巍举,當(dāng)數(shù)組大小不滿足時需要增加存儲能力脆荷,就要講已經(jīng)有數(shù)組的數(shù)據(jù)復(fù)制到新的存儲空間中。當(dāng)從ArrayList的中間位置插入或者刪除元素時懊悯,需要對數(shù)組進(jìn)行復(fù)制蜓谋、移動、代價比較高炭分。因此桃焕,它適合隨機(jī)查找和遍歷,不適合插入和刪除捧毛。

2. Vector與ArrayList一樣观堂,也是通過數(shù)組實現(xiàn)的,不同的是它支持線程的同步呀忧,即某一時刻只有一個線程能夠?qū)慥ector师痕,避免多線程同時寫而引起的不一致性,但實現(xiàn)同步需要很高的花費而账,因此胰坟,訪問它比訪問ArrayList慢。

3. LinkedList是用鏈表結(jié)構(gòu)存儲數(shù)據(jù)的泞辐,很適合數(shù)據(jù)的動態(tài)插入和刪除笔横,隨機(jī)訪問和遍歷速度比較慢竞滓。另外,他還提供了List接口中沒有定義的方法吹缔,專門用于操作表頭和表尾元素商佑,可以當(dāng)作堆棧、隊列和雙向隊列使用厢塘。

4. vector是線程(Thread)同步(Synchronized)的茶没,所以它也是線程安全的,而Arraylist是線程異步(ASynchronized)的俗冻,是不安全的礁叔。如果不考慮到線程的安全因素,一般用Arraylist效率比較高迄薄。

5. 如果集合中的元素的數(shù)目大于目前集合數(shù)組的長度時琅关,vector增長率為目前數(shù)組長度的100%,而arraylist增長率為目前數(shù)組長度的50%.如過在集合中使用數(shù)據(jù)量比較大的數(shù)據(jù),用vector有一定的優(yōu)勢讥蔽。

6. 如果查找一個指定位置的數(shù)據(jù)涣易,vector和arraylist使用的時間是相同的,都是0(1),這個時候使用vector和arraylist都可以冶伞。而如果移動一個指定位置的數(shù)據(jù)花費的時間為0(n-i)n為總長度新症,這個時候就應(yīng)該考慮到使用Linkedlist,因為它移動一個指定位置的數(shù)據(jù)所花費的時間為0(1),而查詢一個指定位置的數(shù)據(jù)時花費的時間為0(i)。ArrayList 和Vector是采用數(shù)組方式存儲數(shù)據(jù)响禽,此數(shù)組元素數(shù)大于實際存儲的數(shù)據(jù)以便增加和插入元素徒爹,都允許直接序號索引元素,但是插入數(shù)據(jù)要設(shè)計到數(shù)組元素移動 等內(nèi)存操作芋类,所以索引數(shù)據(jù)快插入數(shù)據(jù)慢隆嗅,Vector由于使用了synchronized方法(線程安全)所以性能上比ArrayList要差,LinkedList使用雙向鏈表實現(xiàn)存儲侯繁,按序號索引數(shù)據(jù)需要進(jìn)行向前或向后遍歷胖喳,但是插入數(shù)據(jù)時只需要記錄本項的前后項即可,所以插入數(shù)度較快贮竟!

7. 籠統(tǒng)來說:LinkedList:增刪改快丽焊,ArrayList:查詢快(有索引的存在)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市咕别,隨后出現(xiàn)的幾起案子技健,更是在濱河造成了極大的恐慌,老刑警劉巖惰拱,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件雌贱,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)帽芽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來翔冀,“玉大人导街,你說我怎么就攤上這事∠俗樱” “怎么了搬瑰?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長控硼。 經(jīng)常有香客問我泽论,道長,這世上最難降的妖魔是什么卡乾? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任翼悴,我火速辦了婚禮,結(jié)果婚禮上幔妨,老公的妹妹穿的比我還像新娘鹦赎。我一直安慰自己,他們只是感情好误堡,可當(dāng)我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布古话。 她就那樣靜靜地躺著,像睡著了一般锁施。 火紅的嫁衣襯著肌膚如雪陪踩。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天悉抵,我揣著相機(jī)與錄音肩狂,去河邊找鬼。 笑死基跑,一個胖子當(dāng)著我的面吹牛婚温,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播媳否,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼栅螟,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了篱竭?” 一聲冷哼從身側(cè)響起力图,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎掺逼,沒想到半個月后吃媒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年赘那,在試婚紗的時候發(fā)現(xiàn)自己被綠了刑桑。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡募舟,死狀恐怖祠斧,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情拱礁,我是刑警寧澤琢锋,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站呢灶,受9級特大地震影響吴超,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鸯乃,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一鲸阻、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧飒责,春花似錦赘娄、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至拾并,卻和暖如春揍堰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背嗅义。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工屏歹, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人之碗。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓蝙眶,卻偏偏與公主長得像,于是被迫代替她去往敵國和親褪那。 傳聞我的和親對象是個殘疾皇子幽纷,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內(nèi)容