Vector 和 ArrayList 的區別

1.        vector 是線程同步的,所以它也是線程安全的,而 arraylist 是線程異步的,是不安全的。如果不考慮到線程的安全因素,一般用 arraylist 效率比較高。 

2.        如果集合中的元素的數目大於目前集合數組的長度時, vector 增長率爲目前數組長度的 100%, 而 arraylist 增長率爲目前數組長度的 50%. 如過在集合中使用數據量比較大的數據,用 vector 有一定的優勢。

3.         如果查找一個指定位置的數據, vector 和 arraylist 使用的時間是相同的,都是 0(1), 這個時候使用 vector 和arraylist 都可以。而如果移動一個指定位置的數據花費的時間爲 0(n-i)n 爲總長度,這個時候就應該考慮到使用linklist, 因爲它移動一個指定位置的數據所花費的時間爲 0(1), 而查詢一個指定位置的數據時花費的時間爲 0(i) 。

 

另:

如果你注意到對Vector和List的所開始支持的Java版本你就應該可以找到答案了。Java對Vector的支持since 1.0;對List則是since 1.2。這兩個版本之間,sun對於java api做了很多的改動,其中的一個refactoring就是提出了所謂的Collection FrameWork,List就是在那個時候被introduced,它完全符合1.2版本的collection framework,而Vector則是在Colleciton framework出現之前就已經存在了,但java api並沒有將Vector變成Deprecated,主要是backward compatiable的問題,最終JCP將vector做了refactoring的處理,讓它符合所定製的Collection framework了事。另外,Hashtable和HashMap的區別是同樣的道理。

 

結論:

儘量採用 List 和 HashMap , rather than Vector&Hashtable


轉載地址:http://www.blogjava.net/zhyiwww/archive/2006/04/12/40554.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章