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

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

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

    Java學習

    java,spring,structs,hibernate,jsf,ireport,jfreechart,jasperreport,tomcat,jboss -----本博客已經搬家了,新的地址是 http://www.javaly.cn 如果有對文章有任何疑問或者有任何不懂的地方,歡迎到www.javaly.cn (Java樂園)指出,我會盡力幫助解決。一起進步

     

    Vector 和 ArrayList的不同

    Vector 和 ArrayList的不同

    有的時候 Vector更好一些;有的時候ArrayList 更好一些;有的時候你一個也不想用。但愿,你不是在期望一個簡單明了的答案,因為答案因你在用他們做什么而定。下面是要考慮的四個方面:

    API

    同步-Synchronization

    數據增長-Data growth

    使用方法-Usage patterns

    讓我一個一個來解釋吧。

    API

    在The Java Programming Language (Addison-Wesley, June 2000) 中Ken Arnold, James Gosling, 和 David Holmes 是這樣描述Vector的,它是更ArrayList類似的一個東西,所以從API的觀點來看,它們倆是很相似的。但是,它們之間還是有些微的差別的。

    Synchronization

    Vectors是可同步化的,意思就是說,任何操作Vector的內容的方法都是線程安全的,相反的,另一方面,ArrayList是不可同步化的,所 以也不是線程安全的。如果你知道了這些的話,你就會發現,Vector的同步會讓它在性能發方面有一些小問題。所以,如果你不需要線程安全的話,那么就使 用ArrayList吧。為什么要為沒有必要的同步付出代價呢? 網管論壇bbs_bitsCN_com

    Data growth

    實際上,不管是ArrayList還是Vector,在它們內部都是使用一個Array來保存數據的。編程過程中,在使用它們任何一個的時候,你都需要 記住這一點。你在往一個ArrayList或者Vector里插入一個元素的時候,如果內部數組空間不夠了,這個對象(譯者按:指的是你使用的 ArrayList或者Vector)就要擴展它的大小。Vector在默認情況下是產生一個雙倍大小,而ArrayList增加50%的大小。只要你合 理的使用這些類,你就可以結束你在增加新的元素的時候所付出的性能代價。把對象(譯者按:指的是你使用的ArrayList或者Vector)的初始化容 量指定為你編程過程中所能用到的最大的容量總是最好的辦法。仔細的指定容量,你可以避免以后改變內部Array容量,所要付出的代價。如果你并不知道到底 有多少個數據,當是你知道數據的增長率,Vector確實有一點點優勢,因為你可以指定增加值(譯者按,如果沒有猜錯的話,作者說的方法應該是 setSize(int newSize) Sets the size of this vector.)。

    Usage patterns

    ArrayList和Vector在從指定位置取得元素,從容器的末尾增加和刪除元素都非常的有效,所有的這些操作都能在一個常數級的時間(O(1)) 內完成。但是從一個其他的位置增加和刪除一個元素就顯得頗為費時,差不多需要的時間為O(n-i),這里的n代表元素個數,i代表要增加和刪除的元素所在 的位置。這些操作需花費更多的時間,因為你需要挨個移動i和更高位置的元素。那么,以上這些到底說明了什么呢?

    網管u家u.bitsCN.com



    這意味著,如果你取得一個元素,或者從數組末尾增加或刪除一個元素的話,隨便你使用Vector和ArrayList。如果你想要對數組內容做其他操作 的話,那么就為自己好另一個容器吧。比喻說,LinkedList可以在常數級時間(O(1))內為任意一個位置的元素增加和刪除。但是,取得一個元素, 會稍微慢一點,時間要用O(i) ,這個i是元素的位置。通過ArrayList也是很簡單的,因為你可以簡單使用一個索引,而不是構造一個iterator 。LinkedList也為每個插入的元素建立一個內部對象。所以,你也必須知道,同時產生了垃圾對象。

    最后, Practical Java (Addison-Wesley, Feb. 2000) Peter Haggar 里的“實踐41“建議你使用一個普通的原始的數組來代替Vector和ArrayListe,特別是對效率優先的代碼來說。通過使用數組(array), 你可以避免同步,額外的方法調用,非理想化的大小改變。你付出的只是額外的開發時間。

    posted on 2008-11-10 10:41 找個美女做老婆 閱讀(236) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    導航

    統計

    公告

    本blog已經搬到新家了, 新家:www.javaly.cn
     http://www.javaly.cn

    常用鏈接

    留言簿(6)

    隨筆檔案

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲免费中文字幕| 久爱免费观看在线网站| 成年18网站免费视频网站| 33333在线亚洲| 成年人视频在线观看免费| 亚洲中文字幕久久无码| 在线免费观看一级毛片| 国产精品亚洲色婷婷99久久精品| 免费看片A级毛片免费看| 噜噜综合亚洲AV中文无码| 精品免费国产一区二区三区| 美女黄网站人色视频免费| 亚洲精品无码日韩国产不卡?V| 一进一出60分钟免费视频| 国产成人无码综合亚洲日韩| 最近免费最新高清中文字幕韩国 | 亚洲JIZZJIZZ妇女| 国产中文字幕免费| 一区二区三区在线免费观看视频 | 在线观看国产区亚洲一区成人| 花蝴蝶免费视频在线观看高清版| 亚洲欧洲第一a在线观看| 亚欧免费视频一区二区三区 | 国产亚洲精品自在线观看| 老司机精品免费视频| 精品无码一区二区三区亚洲桃色| 欧美三级在线电影免费| 二级毛片免费观看全程| 亚洲av日韩av不卡在线观看| 成人免费午夜在线观看| 男女交性无遮挡免费视频| 亚洲av无码潮喷在线观看| 久久这里只有精品国产免费10| 黄色a三级三级三级免费看| 亚洲成AV人片一区二区| 在线播放免费人成视频在线观看| 一级黄色免费网站| 国产成人精品日本亚洲网址| 狠狠亚洲婷婷综合色香五月排名 | 日韩亚洲人成在线| 亚洲精品无码MV在线观看|