ArrayList 類是實現List 介面的類之一,是一個元素個數可變的集合,底層使用陣列實現。
特點:
元素是連續儲存的,每個元素都可以比較快地訪問。
相反,新增或刪除元素可能需要更多的時間。
1 基本操作:
1、建立ArrayList例項
// 資料型別不能為基本型別ArrayList<資料型別> 變數名 = new ArrayList <>();示例:ArrayList
由於 ArrayList 是實現 List 介面的類,因此也可以將其建立為 List 物件,如下所示。如果將其建立為 List 物件,那麼在 ArrayList 類中定義的方法將不可用,但在轉換為實現相同 List 介面的類(如
LinkedList
)時將會很方便。
List
2、新增元素
要將元素新增到列表的末尾,需要使用 ArryaList 類提供的 add 方法。
public boolean add(E e);
示例如下:
List
上面新增元素使用的是基本型別,這其中涉及到
自動裝箱
的過程,可以檢視上一篇文章。
3、指定位置新增元素
在指定位置新增元素,使用add(E e)的過載方法,如下:
// index:要新增的位置索引;element:元素值public void add(int index, E element);
示例:
List
如果
索引
超出範圍(index <0 ||
index> size()
),那麼將會丟擲IndexOutOfBoundsException(陣列越界),
注意這裡是
>
。
4、獲取陣列的大小
使用size()方法,如下:
public int size();
示例:
List
5、獲取陣列的元素
使用get(int index)方法:
public E get(int index);
示例:
List
如果索引
超出範圍(index <0 ||
index >= size()
),那麼會丟擲
IndexOutOfBoundsException,注意這裡是
>=
。
6、替換元素
使用set(int index, E element)方法:
public E set(int index, E element);
示例:
List
如果
索引
超出範圍 (index <0 || index >= size()),那麼會丟擲
IndexOutOfBoundsException,注意這裡是
>=
。
7、刪除指定位置元素
使用remove(int index)方法:
public E remove(int index);
List
如果
索引
超出範圍 (index <0 || index >= size()),那麼會丟擲
IndexOutOfBoundsException,注意這裡是
>=
。
8、刪除所有元素
使用clear()方法:
public void clear();
示例:
List
9、查詢元素(indexOf、lastIndexOf、contains)
要查詢包含指定物件的列表中的第一個元素,使用 ArryaList 類提供的 indexOf() 方法:
public int indexOf(Object o);
要查詢包含指定物件的列表中的最後一個元素,使用 ArryaList 類提供的
lastIndexOf
() 方法:
public int lastIndexOf(Object o);
要查詢指定物件的列表中是否一個元素,使用 ArryaList 類提供的 contains() 方法:
public boolean contains(Object o)
示例:
List
2 高階用法
2。1 新增一個集合中的所有元素
要在一個集合的尾部新增另一個集合中的所有元素,使用addAll(Collection<? extends E> c)方法:
public boolean addAll(Collection<? extends E> c);
要在指定索引新增一個集合中的所有元素,使用addAll(int index, Collection<? extends E> c)方法:
public boolean addAll(int index, Collection<? extends E> c);
示例:
List
2。2 集合元素去重
集合去重可以搭配Set來解決,如下:
List
3.3 集合三種遍歷方式
第一種:隨機訪問,透過索引值去遍歷。
由於ArrayList實現了RandomAccess介面,它支援透過索引值去隨機訪問元素。
String value = null;int size = list。size();for (int i = 0; i < size; i++) { value = list。get(i);}
第二種:for迴圈遍歷。
String value = null;for (String v : list) { value = v;}
第三種:迭代器遍歷。
String value = null;Iterator
對集合進行
遍歷刪除
時務必要用迭代器:
Iterator
遍歷ArrayList時,使用隨機訪問(即,透過索引序號訪問)效率最高,而使用迭代器的效率最低!
3.4 集合排序
集合正序排序使用Collections。sort(List
集合倒序使用Collections。reverse(List
集合順序打亂使用Collections。shuffle(List
示例:
List
3。5 交集、並集、差集
首先準備兩個集合:
List
差集:
list1。removeAll(list2); // list1值為[2, 1]
並集:
list1。removeAll(list2);list1。addAll(list2); // list1值為[2, 1, 3, 4, 5]
交集:
list1。retainAll(list2); // list1值為[3]