ArrayList的部分用法

ArrayList的用法

用法

構造函數

無參構造(它調用的有參):建立一個默認容量爲10的數組java

有參構造:根據傳入的數組大小建立數組容量數組

添加

add 添加一個引用類型的元素
Collections.addAll(集合,添加的元素) 添加多個元素

注意:ArrayList不容許添加基本數據類型的元素,但能添加它們的包裝類函數

包裝類.parseXXX(字符串) 把字符串轉成相應的包裝類
String類型中有字母時轉數字類型時會報NumberFormatException異常
String類型轉成boolean類型時,只要字符串裏面不是true,轉換後都爲false線程

contains

底層原理是遍歷數組集合,用equals判斷是否包含,因此自定義的類須要重寫equals方法,不然比較不出來(比的地址)code

遍歷

for

foreach

迭代器

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的值不一樣時
   }

刪除

remove(int index)

注意:每次刪除後,後面的元素會向前補位,每次只刪除一個元素rem

remove(Object obj)

底層根據傳入的值和集合中的元素進行euqals比較,因此須要重寫茲定義的類的equals方法(誰主張誰舉證,刪除誰就誰提供euqals方法),和contains同樣字符串

clear()

清空集合it

相關文章
相關標籤/搜索