關於arrayList的add和addall

2021-06-21 16:14:58 字數 627 閱讀 2083

**:

如果連線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 或把指...