ArrayList擴容機制

2022-08-18 05:42:07 字數 995 閱讀 2166

arraylist實現了list介面。它是乙個可調整大小的陣列,可以用來存放各種形式的資料。並提供了包括crud在內的多種方法可以對資料進行操作,但是它不是執行緒安全的。list擴容實現步驟總的來說就是分兩步:

陣列定義的時候,因為需要給它分配連續的記憶體空間,需要預先指定其大小。因此當存放的資料大於其大小的時候,我們需要從新分配一塊更大的空間,把原來的複製過去在插入新的元素。

在arraylist中,當空間不夠用的時候,它會自動擴容為原來的1.5倍的大小。

因為擴容設計到記憶體的申請和資料的搬移,這是比較耗時的,所以,如果事先能確定資料的大小,做好在建立arraylist的時候指定其大小。

雖然arraylist比陣列好用,不過有些時候使用陣列會更好一些,原因如下:

arraylist無法儲存基本型別,int long等需要封裝成integer,long類,而自動裝箱和拆箱的操作也會有一定的效能消耗,所以如果關注效能或者想用基本型別就選用陣列。

如果資料的大小已經知道,並且對資料的操作簡單,可以直接使用陣列。

當使用多為陣列的時候,用陣列表示起來更加直觀比如intarr;而用容器的話則需要這樣定義arraylist arr。

新增資料

刪除資料

更新資料

查詢資料

ArrayList擴容機制

1.成員變數 預設給定的初始容量 private static final int default capacity 10 無參構造器中所使用到的空陣列例項 private static final object empty elementdata 有參構造器中所使用到的空陣列例項 private ...

ArrayList動態擴容機制

初始化 有三種方式預設的構造器,將會以預設的大小來初始化內部的陣列 public arraylist 用乙個icollection物件來構造,並將該集合的元素新增到arraylist public arraylist collection c 用指定的大小來初始化內部的陣列 public array...

ArrayList自動擴容機制

arraylist 操作的底層其實是object 陣列,對該陣列進行了包裝。arraylist 在建立時若不指定元素個數,會使用預設值 private static final int default capacity 10 內部相當於建立了乙個 object object new object 1...