<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 6,comments - 2,trackbacks - 0

    Vector 還是ArrayList――哪一個更好,為什么?


    要回答這個問題不能一概而論,有時候使用Vector比較好;有時是ArrayList,有時候這兩個都不是 

    最好的選擇。你別指望能夠獲得一個簡單肯定答案,因為這要看你用它們干什么。下面有4個要考慮 

    的因素: 

    l API 

    l 同步處理 

    l 數據增長性 

    l 使用模式 

    下面針對這4個方面進行一一探討 

    API

    在由Ken Arnold等編著的《Java Programming Language》(Addison-Wesley, June 2000)一書中有這 

    樣的描述,Vector類似于ArrayList.。所有從API的角度來看這兩個類非常相[b]似。但他們之間也還 

    是有一些主要的區別的。
    同步性

    Vector是同步的。這個類中的一些方法保證了Vector中的對象是線程安全的。而ArrayList則是異步 

    的,因此ArrayList中的對象并不是線程安全的。因為同步的要求會影響執行的效率,所以如果你不 

    需要線程安全的集合那么使用ArrayList是一個很好的選擇,這樣可以避免由于同步帶來的不必要的 

    性能開銷。 

    數據增長

    從內部實現機制來講ArrayList和Vector都是使用數組(Array)來控制集合中的對象。當你向這兩種類 

    型中增加元素的時候,如果元素的數目超出了內部數組目前的長度它們都需要擴展內部數組的長度, 

    Vector缺省情況下自動增長原來一倍的數組長度,ArrayList是原來的50%,所以最后你獲得的這個集 

    合所占的空間總是比你實際需要的要大。所以如果你要在集合中保存大量的數據那么使用Vector有一 

    些優勢,因為你可以通過設置集合的初始化大小來避免不必要的資源開銷。 

    使用模式

    在ArrayList和Vector中,從一個指定的位置(通過索引)查找數據或是在集合的末尾增加、移除一 

    個元素所花費的時間是一樣的,這個時間我們用O(1)表示。但是,如果在集合的其他位置增加或移除 

    元素那么花費的時間會呈線形增長:O(n-i),其中n代表集合中元素的個數,i代表元素增加或移除元 

    素的索引位置。為什么會這樣呢?以為在進行上述操作的時候集合中第i和第i個元素之后的所有元素 

    都要執行位移的操作。這一切意味著什么呢? 

    這意味著,你只是查找特定位置的元素或只在集合的末端增加、移除元素,那么使用Vector或 

    ArrayList都可以。如果是其他操作,你最好選擇其他的集合操作類。比如,LinkList集合類在增加 

    或移除集合中任何位置的元素所花費的時間都是一樣的—O(1),但它在索引一個元素的使用缺比較慢 

    -O(i),其中i是索引的位置.使用ArrayList也很容易,因為你可以簡單的使用索引來代替創建 

    iterator對象的操作。LinkList也會為每個插入的元素創建對象,所有你要明白它也會帶來額外的開 

    銷。 

    最后,在《Practical Java》一書中Peter Haggar建議使用一個簡單的數組(Array)來代替Vector 

    或ArrayList。尤其是對于執行效率要求高的程序更應如此。因為使用數組(Array)避免了同步、額外 

    的方法調用和不必要的重新分配空間的操作。

    posted on 2012-09-29 09:38 achan2bj 閱讀(142) 評論(0)  編輯  收藏 所屬分類: java SE
    主站蜘蛛池模板: 国产亚洲AV无码AV男人的天堂| 国产精品成人无码免费| 久久亚洲精品中文字幕三区| 无码人妻一区二区三区免费视频| 日韩毛片无码永久免费看| 久久亚洲国产最新网站| 久久久久久久久免费看无码| 中文字幕亚洲男人的天堂网络 | 亚洲?V乱码久久精品蜜桃| 福利片免费一区二区三区| 波多野结衣一区二区免费视频| 黄页网站在线观看免费| 亚洲福利视频一区二区| 视频免费在线观看| 久久久亚洲欧洲日产国码是AV| 四虎在线免费视频| 亚洲经典千人经典日产| 亚洲AV中文无码乱人伦在线视色| 国产激情久久久久影院老熟女免费| 国产亚洲精品成人AA片新蒲金| 日韩精品久久久久久免费| 亚洲校园春色另类激情| 免费在线观看污网站| 久久久久免费看黄a级试看 | 国产亚洲视频在线播放大全| 亚洲国产综合久久天堂| 久久这里只精品国产免费10| 亚洲国产精品成人久久久| 日韩久久无码免费毛片软件| 日本一卡精品视频免费 | 亚洲视频手机在线| 成人免费福利电影| 一级特黄录像免费播放中文版| 亚洲爆乳无码一区二区三区| 中字幕视频在线永久在线观看免费 | 精品国产免费一区二区三区| 久久久久亚洲av无码专区喷水| 处破痛哭A√18成年片免费| 人妻免费久久久久久久了| 亚洲综合一区二区国产精品| 日韩激情淫片免费看|