Vector
和
ArrayList
的區(qū)別
(這篇文章是從網(wǎng)上摘錄,地址忘了,如涉及版權(quán)請(qǐng)和我聯(lián)系z(mì)hyiwww@163.com)
1.
vector
是線程同步的,所以它也是線程安全的,而
arraylist
是線程異步的,是不安全的。如果不考慮到線程的安全因素,一般用
arraylist
效率比較高。
2.
如果集合中的元素的數(shù)目大于目前集合數(shù)組的長(zhǎng)度時(shí),
vector
增長(zhǎng)率為目前數(shù)組長(zhǎng)度的
100%,
而
arraylist
增長(zhǎng)率為目前數(shù)組長(zhǎng)度的
50%.
如過在集合中使用數(shù)據(jù)量比較大的數(shù)據(jù),用
vector
有一定的優(yōu)勢(shì)。
3.
如果查找一個(gè)指定位置的數(shù)據(jù),
vector
和
arraylist
使用的時(shí)間是相同的,都是
0(1),
這個(gè)時(shí)候使用
vector
和
arraylist
都可以。而如果移動(dòng)一個(gè)指定位置的數(shù)據(jù)花費(fèi)的時(shí)間為
0(n-i)n
為總長(zhǎng)度,這個(gè)時(shí)候就應(yīng)該考慮到使用
linklist,
因?yàn)樗苿?dòng)一個(gè)指定位置的數(shù)據(jù)所花費(fèi)的時(shí)間為
0(1),
而查詢一個(gè)指定位置的數(shù)據(jù)時(shí)花費(fèi)的時(shí)間為
0(i)
。
另:
如果你注意到對(duì)Vector和List的所開始支持的Java版本你就應(yīng)該可以找到答案了。Java對(duì)Vector的支持since 1.0;對(duì)List則是since 1.2。這兩個(gè)版本之間,sun對(duì)于java api做了很多的改動(dòng),其中的一個(gè)refactoring就是提出了所謂的Collection FrameWork,List就是在那個(gè)時(shí)候被introduced,它完全符合1.2版本的collection framework,而Vector則是在Colleciton framework出現(xiàn)之前就已經(jīng)存在了,但java api并沒有將Vector變成Deprecated,主要是backward compatiable的問題,最終JCP將vector做了refactoring的處理,讓它符合所定制的Collection framework了事。另外,Hashtable和HashMap的區(qū)別是同樣的道理。
結(jié)論:
盡量采用
List
和
HashMap
,
rather than Vector&Hashtable
|----------------------------------------------------------------------------------------|
版權(quán)聲明 版權(quán)所有 @zhyiwww
引用請(qǐng)注明來(lái)源 http://www.tkk7.com/zhyiwww
|----------------------------------------------------------------------------------------|
posted on 2006-04-12 09:09
zhyiwww 閱讀(1602)
評(píng)論(0) 編輯 收藏 所屬分類:
java basic