**:
如果連線2個arraylist, 比如a和b,如果直接寫a.addall(b); 有可能連線不上,最常見的方法是定義乙個新的arraylist c, 再c.addall(a)和c.addall(b)
arraylist是乙個實現可變長陣列,繼承abstractlist類,實現所有的list介面,還實現了randomaccess、cloneable、serializable介面。
add源**:
public boolean add(e e)
addall源**:
//將collection c內的資料插入arraylist中
public boolean addall(collection<? extends e> c)
//將collection c中的資料插入到arraylist的指定位置
public boolean addall(int index, collection<? extends e> c)
可以看出,add是將傳入的引數作為當前list中的乙個item儲存,即使你傳入乙個list也只會另當前的list增加1個元素,而addall是傳入乙個list,將此list中的所有元素加入到當前list中,也就是當前list會增加的元素個數為傳入的list的大小
關於arrayList的add和addall
花了一周時間,重構了系統中最重要的一段下發列印邏輯的 理清了各型別間的呼叫關係,得意之際,測試告訴 資料異常了,花了5個小時的測試,終於發現了問題,用錯了arraylist的addall方法,下面列舉下add和addall方法。arraylist是乙個實現可變長陣列,繼承abstractlist類,...
關於ArrayList的天坑
arraylist中的每乙個元素儲存的實際上是物件引用 之前在公司寫 的時候,做過類似下面的事 假如按照下面的方式使用arraylist,則最後list中儲存的元素都相同且都是最後乙個元素,原因是list中所有的元素都指向同一塊記憶體。test public void test1 system.ou...
關於arraylist的擴容機制
arraylist會自動改變size的長度 首先,arraylist定義了乙個私有的未被序列化的陣列elementdata,用來儲存arraylist的物件列表 注意只定義未初始 private transient object elementdata 其次,以指定初始容量 capacity 或把指...