ArrayList和Vector的聯絡和區別

2021-10-25 01:14:07 字數 843 閱讀 2996

arraylist和vector兩者內部都是通過陣列實現的,允許快速隨機訪問。

陣列的缺點是每個元素之間不能有間隔,當陣列大小不滿足時需要增加儲存能力,就要將已經有陣列的資料複製到新的儲存空間中。當從陣列的中間位置插入或者刪除元素時,需要對陣列進行複製、移動代價比較高。因此,它適合隨機查詢和遍歷,不適合插入和刪除。

精簡一下:

二者都採用線性連續儲存空間,都有乙個初始容量大小。

當vector或arraylist中的元素超過它的初始大小時, vector會將它的容量翻倍,而arraylist只增加50%,對於某個固定的容量,vector擴容的次數較arraylist少,但arraylist可能更加節約記憶體空間。

vector中是執行緒安全的(使用synchronized修飾方法),而arraylist的方法不是,由於執行緒的同步必然要影響效能,因此 arraylist的效能比vector好。

如果有多個執行緒會訪問到集合,那最好是使用 vector,因為不需要再去考慮和編寫程安全的**。

精簡一下:

1. arraylist在底層陣列不夠用時在原來的基礎上擴充套件0.5倍,vector是擴充套件1倍。

2. vector是執行緒安全的,arraylist不是執行緒安全的。

(完)同事結婚了,送的喜糖用空心鐵球裝著,很好看,據說成本才2元乙個。

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