構造方法 三種
//如果已知容量, 則呼叫這個構造方法,可以獲得指定容量的 陣列
public arraylist(int initialcapacity) else if (initialcapacity == 0) else
}
//構造空的資料即容量為0
public arraylist()
//構造 將乙個集合中的所有元素新增到arraylst中,新增順序是iterator返回的順序
如果集合為空,則報空指標
public arraylist(collection<? extends e> c) else
}
arraylist的自動增長
//新增元素,在新增元素會自動增長 具體增長情況 向下看:
public boolean add(e e)
首先會呼叫它: 作用為://先判斷 是否為空,如果為空,則挑選 預設的10 ,和傳進來的引數比較大小,取最大值,然後執行ensrueexpliciticapacity函式,具體看下面:
private void ensurecapacityinternal(int mincapacity)
ensureexplicitcapacity(mincapacity);
}
//modcount 為結構性修改的次數 與 後面的迭代器有關
每次add 一次,或remove 或addall 等等一次
modcount 都會+1
//然後判斷 ,如果 引數的值 小於 當前陣列的長度,則不做任何操作
如果 引數的值 大於當前陣列長度,則執行grow操作
private void ensureexplicitcapacity(int mincapacity)
//grow 如果是第一此呼叫,則會擴充套件10 如果不是第一次呼叫,則 會增長一半 即是以前陣列長度的2分之三.
如果增長後的長度大於int的(最大值-8)則執行hugecapacity
private void grow(int mincapacity)
即 判斷 實際傳過來的值是否大於int的(最大值-8),如果大於則用最大值,如果不大於則用int的(最大值-8)
private static int hugecapacity(int mincapacity)
總的來說 arraylist的 自動增長情況概述:
當用無參構造方法情況下,第一次新增元素,則會呼叫
ensurecapacityinternal
來判斷是否第一次新增元素,如果是則預設增長的數值為
10,然後執行
ensureexplicitcapacity
(不是第一次新增也會執行),該陣列的結構性修改次數
+1,然後判斷
是否需要陣列的長度大於資料當前的長度,如果是則執行
grow
增長以前的一半(除了第一次增長,第一次增長就是預設
10)(也要除了最後一次增長,意思是增長一半如果大於(最大值-8)
則另行執行另乙個
hugecapacity
函式,再判斷你需要的長度
是否大於(最大值
-8),如果大於則用
int的最大值,如果不大於則用(最大值
-8)),如果不是則不增長。
-------------------------第一次寫,有點亂,見諒-----------------------------
mysql 去除列的自增長 mysql自增長列
自增長列必須是索引列,否則無法建立成功表,對myisma和innodb都一樣 localhost testdb root create table test5 id int auto increment,name varchar 10 engine innodb error 1075 42000 l...
Oracle 的 自增長
oracle的自增長與mysql 的自增長不同,mysql使用其關鍵字auto increment實現自增長,而oracle中沒有改關鍵字,所以要使oracle中表自增長,可以使用序列實現該效果。如下所述 1 建立表user create table user id number 2 not nul...
oracle的自增長
mysql的自增長非常容易,乙個 auto increment 就搞定,可是oracle就不行了 下面是oracle的自增長 建立乙個表 create table t test departments id number 10 not null,description varchar2 50 not...