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也爲每個插入的元素建立一個內部對象。所以,你也必須知道,同時產生了垃圾對象。