Vector 和 ArrayList 的區別

相同點:

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.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章