List (interface)
List 特性
- 關心元素的位置,是一個有序排列物件的集合
- 可儲存重複物件
- 支援基於索引的隨機存取
屬於 java.util 套件,由於繼承自 ListIterator,List 允許在指定索引插入移除元素,但超出索引,編譯器就會拋出像 IndexOutOfBoundsException 這類錯誤。
陣列 ArrayList 類別就是實作自 List 介面,其他類別還有 LinkedList、Vector、Stack。
新增陣列(靜態方法)
List 介面提供 List.of
跟 List.copyOf
靜態方法(分別於 Java 9, 10 出現),短暫創建具體實現 List 的實例,並建立一個不可變的陣列。
List<Obj> list = List.of(new Obj(), ...);
存入 Collection 的元素都會是物件,如果傳入不是物件,都會透過 Wrapper Class 包裝後再傳入。
List<Integer> NumList = List.of(1, 2, 3);
System.out.println(NumList.get(1) instanceof Integer);
常用方法
操作元素(新增、修改、取得、刪除)
Method | Description |
---|---|
boolean add(E e) void add(int index, E element) |
新增元素(index 為指定索引,無指定索引在末尾新增) |
boolean addAll(Collection<? extends E> c) boolean addAll(int index, Collection<? extends E> c) |
新增集合元素(index 為指定索引,無指定索引在末尾新增) |
E set(int index, E element) |
修改指定索引元素 |
E get(int index) |
取得指定索引元素 |
E remove(int index) boolean remove(Object o) |
移除指定索引元素 移除首次出現指定元素 |
void clear() |
移除陣列的所有元素 |
查詢
Method | Description |
---|---|
boolean contains(Object o) boolean containsAll(Collection<?> c) |
是否包含指定(集合)元素 |
int size() |
回傳元素數量 |
boolean isEmpty() |
陣列是否為空 |
int indexOf(Object o) |
回傳陣列中第一個出現指定元素的索引,沒有則回傳 -1 |
int lastIndexOf(Object o) |
回傳陣列中最後一個出現指定元素的索引,沒有則回傳 -1 |
迭代
Method | Description |
---|---|
Iterator<E> iterator() |
回傳陣列中元素的迭代器 |
void forEach(Consumer<? super E> action) |
遍歷陣列元素執行指定邏輯 |
轉換類型和比較
Method | Description |
---|---|
Object[] toArray() |
回傳陣列中所有元素的陣列 |
<T> T[] toArray(T[] a) |
回傳陣列中所有元素的陣列 |
boolean equals(Object o) |
比較指定物件與陣列是否相等(含類別) |
int hashCode() |
回傳陣列的雜湊值 |
並發操作
| Spliterator<E> spliterator()
| 分割集合,回傳 Spliterator(分割迭代器) |
下一篇,介紹 List 的實作類別。