無參構造(它調用的有參):建立一個默認容量爲10的數組java
有參構造:根據傳入的數組大小建立數組容量數組
add | 添加一個引用類型的元素 |
---|---|
Collections.addAll(集合,添加的元素) | 添加多個元素 |
注意:ArrayList不容許添加基本數據類型的元素,但能添加它們的包裝類函數
包裝類.parseXXX(字符串) 把字符串轉成相應的包裝類
String類型中有字母時轉數字類型時會報NumberFormatException異常
String類型轉成boolean類型時,只要字符串裏面不是true,轉換後都爲false
線程
底層原理是遍歷數組集合,用equals判斷是否包含,因此自定義的類須要重寫equals方法,不然比較不出來(比的地址)code
for(Iterator it=list.iterator();it.hasNext();){ System.out.println(it.next()); }
注意: 通常迭代器建議用一次,由於第一次迭代完,迭代器內部的cursor遊標已經走到最後,再次迭代也是從上一次的尾部開始,建議用上方的寫法
迭代器迭代過程當中不容許修改操做(如刪除),由於底層用
checkForComodification()方法進行判斷orm
有兩個線程(線程A,線程B),其中線程A負責遍歷list、線程B修改list。 -線程A在遍歷list過程的某個時候(此時expectedModCount = modCount=N),線程啓動, 同時線程B增長一個元素,這是modCount的值發生改變(modCount + 1 = N + 1)。 線程A繼續遍歷執行next方法時, 通告checkForComodification方法發現expectedModCount = N , 而modCount = N + 1,二者不等, 這時就拋出ConcurrentModificationException 異常,從而產生fail-fast機制。 解決辦法: 使用iterator本身的remove方法
final void checkForComodification() { if (modCount != expectedModCount) throw new ConcurrentModificationException();//當expectedModCount和modCount的值不一樣時 }
注意:每次刪除後,後面的元素會向前補位,每次只刪除一個元素rem
底層根據傳入的值和集合中的元素進行euqals比較,因此須要重寫茲定義的類的equals方法(誰主張誰舉證,刪除誰就誰提供euqals方法),和contains同樣字符串
清空集合it