List (interface)
List 特性
- 關心元素的位置,是一個有序排列物件的集合
- 可儲存重複物件
- 支援基於索引的隨機存取
屬於 java.util 套件,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 的實作類別。


