ArrayList和Vector的區別

2021-08-27 23:13:27 字數 1135 閱讀 7086

這兩個類都實現了list

介面(list

介面繼承了

collection

介面),他們都是有序集合,即儲存在這兩個集合中的元素的位置都是有順序的,相當於一種動態的陣列,我們以後可以按位置索引號取出某個元素,,並且其中的資料是允許重複的,這是

hashset

之類的集合的最大不同處,

hashset

之類的集合不可以按索引號去檢索其中的元素,也不允許有重複的元素(本來題目問的與

hashset

沒有任何關係,但為了說清楚

arraylist與

vector

的功能,我們使用對比方式,更有利於說明問題)。

接著才說

arraylist與

vector

的區別,這

主要包括兩個方面:

. (1

)同步性

:vector是執行緒安全的,也就是說是

它的方法之間是執行緒

同步的,而arraylist

是線程式不安全的,

它的方法之間

是執行緒不

同步的。如果只有乙個執行緒會訪問到集合,那最好是使用arraylist

,因為它不考慮執行緒安全,效率會高些;如果有多個執行緒會訪問到集合,那最好是使用

vector

,因為不需要我們自己再去考慮和編寫執行緒安全的**。(2)

資料增長

:arraylist與

vector

都有乙個初始的容量大小,

當儲存進它們裡面的元素的個數超過了容量時,就

需要增加

arraylist與

vector

的儲存空間,每次要增加儲存空間時,不是只增加乙個儲存單元,而是增加多個儲存單元,每次增加的儲存單元的個數在記憶體空間利用與程式效率之間要取得一定的平衡。

vector預設增長為原來

兩倍,而arraylist

的增長策略在文件中沒有明確規定(從源**看到的是增長為

原來的1.5

倍)。arraylist與

vector

都可以設定初始的空間大小,vector

還可以設定增長的空間大小,而

arraylist

沒有提供設定增長空間的方法。

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的底層由雙向鍊錶實現,底層的不同才是他們區別的根源。然而因為他們繼承於同乙個父介面,他們的很多方法都是相同的。關於...