ArrayList和Vector的區別

2022-04-28 22:33:27 字數 1132 閱讀 8434

這些都是自己總結,若是有不對的地方請指出:

相同處:arraylist和vector底層都是用陣列實現的

arraylist原始碼裡是這麼寫的:

transient object elementdata;

private static final object defaultcapacity_empty_elementdata = {};

public arraylist()

vector原始碼:

protected object elementdata;

public vector(int initialcapacity, int capacityincrement)

public vector(int initialcapacity)

public vector()

先不用管**有多複雜,看一下構造。

總結一下:第乙個:vector和arraylist底層都是陣列實現的。

第二個就是若開始都是用空構造則預設的陣列長度都為10

不同處:第乙個:最明顯的乙個是vector是執行緒安全的(通過實現synchronize方法)而arraylist是執行緒不安全的

第二個:arraylist如果需要擴容新陣列的長度是原來陣列的1.5倍。而vector是原來的兩倍

vector:

public synchronized boolean add(e e)

private void ensurecapacityhelper(int mincapacity)

private void grow(int mincapacity)

arraylist:  

public boolean add(e e)

private void ensurecapacityinternal(int mincapacity)

ensureexplicitcapacity(mincapacity);

}private void ensureexplicitcapacity(int mincapacity)

private void grow(int mincapacity)

arraylist和vector的擴容機制差不多,不清楚的同學可以去看看原始碼,乙個看懂了另乙個就不難了。

Array List和ArrayList的區別與

定義 public abstract class array icloneable,ilist,icollection,ienumerable,istructuralcomparable,istructuraequatable 陣列在記憶體中是連續儲存的,所以它的索引速度是非常的快,而且賦值與修改元...

過載技巧 簡單實現string和Vector

1.賦值 下標 呼叫 和成員訪問箭頭 等操作符必須定義為成員,將這些操作符定義為非成員函式將在編譯時標記為錯誤。2.像賦值一樣,復合賦值操作符通常應定義為類的成員。與賦值不同的是,不一定非得這樣做,如果定義為非成員復合賦值操作符,不會出現編譯錯誤。3.改變物件狀態或與給定型別緊密聯絡的其他一些操作符...

LinkedList和ArrayList的區別

對於集合collection下的list介面,有兩個實現類,arraylist和linkedlist,那麼他們兩個有什麼區別呢。arraylist的底層由陣列實現,而linkedlist的底層由雙向鍊錶實現,底層的不同才是他們區別的根源。然而因為他們繼承於同乙個父介面,他們的很多方法都是相同的。關於...