ArrayList 和Vector的區別

來源:互聯網
上載者:User
Vector和ArrayList Vector和ArrayList在使用上非常相似,都可用來表示一組數量可變的對象應用的集合,並且可以隨機地訪問其中的元素。   Vector的方法都是同步的(Synchronized),是安全執行緒的(thread-safe),而ArrayList的方法不是,由於線程的同步必然要影響效能,因此,ArrayList的效能比Vector好。  當Vector或ArrayList中的元素超過它的初始大小時,Vector會將它的容量翻倍,而ArrayList只增加50%的大小,這樣,ArrayList就有利於節約記憶體空間ArrayList和Vector在從指定位置取得元素,從容器的末尾增加和刪除元素都非常的有效,所有的這些操作都能在一個常數級的時間(O(1))內完成。但是從一個其他的位置增加和刪除一個元素就顯得頗為費時,差不多需要的時間為O(n-i),這裡的n代表元素個數,i代表要增加和刪除的元素所在的位置。這些操作需花費更多的時間,因為你需要挨個移動i和更高位置的元素。那麼,以上這些到底說明了什麼呢?    這意味著,如果你取得一個元素,或者從數組末尾增加或刪除一個元素的話,隨便你使用Vector和ArrayList。如果你想要對數組內容做其他動作的話,那麼就為自己好另一個容器吧。比喻說,LinkedList可以在常數級時間(O(1))內為任意一個位置的元素增加和刪除。但是,取得一個元素,會稍微慢一點,時間要用O(i) ,這個i是元素的位置。通過ArrayList也是很簡單的,因為你可以簡單使用一個索引,而不是構造一個iterator 。LinkedList也為每個插入的元素建立一個內部對象。所以,你也必須知道,同時產生了垃圾對象。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.