1、都是採用數組方式存儲數據,可變長度,相當於一個特殊的數組
2、都是有序輸出,都可以用循環遍歷.
不同點:
1、Vector的方法都是同步的(Synchronized),是線程安全的(thread-safe),而ArrayList的方法是不同步的,由於線程的同步必然要影響性能,因此,ArrayList的性能比Vector好。
2、當Vector或ArrayList中的元素的長度超過它的初始大小長度時,Vector會將它的容量翻倍增加長度,而ArrayList只增加50%的幅度,這樣,ArrayList就有利於節約內存空間。
Vector v=new Vector();
List list=new ArrayList();
for (int i = 0; i <15; i++) {
v.add(i);
System.out.println(v.get(i));
}
for (int i = 0; i <15; i++) {
list.add(i);
System.out.println(list.get(i));
}
//調用顯示vector的增加倍數 翻倍增長
print(v);
//調用顯示list的增加倍數 0.5倍增長
print(list);
ArrayList 從存儲數據的方式來看: 它允許所有元素,包括null。
List l=new ArrayList();
l.add(null);
此數組元素數大於實際存儲的數據以便增加和插入元素,Arraylist的增加和插入是需要隨機產生10-0之間的最大隨機數來確定長度的變化
如果你的存儲長度比增加長度的位數小,則產生隨機數.都允許直接序號索引元素,但是插入數據要設計到數組元素 ,移動等內存操作,所以索引數據快插入數據慢。
補充:
答: 同:
1.都是可變長度的動態數組. 2.保存形式:add方法看出來都是先加先出.
異:
vector同步:線程安全.synchrnized 鎖級標的意思 但是在java方法裏面表示同步的意思(源碼)
arraylist異步:運行速度較快,因爲沒有采用線程.
理論:線程的安全就會產生等待.
同步方法:因爲是讓一個線程執行完之後,在執行下一個線程,中間有間隙時間.next
同步方法產生了隊列 就像排隊做一件事情一樣.
Arraylist異步方法,只有一個線程,不需要等待上一個操作的執行,add方法所以速度快於vactor.