Java 學習筆記 15 – Collection 架構 Part.2 - List


Posted by vickyh1315 on 2024-06-23

List (interface)

List 特性

  • 關心元素的位置,是一個有序排列物件的集合
  • 可儲存重複物件
  • 支援基於索引的隨機存取

屬於 java.util 套件,由於繼承自 ListIterator,List 允許在指定索引插入移除元素,但超出索引,編譯器就會拋出像 IndexOutOfBoundsException 這類錯誤。

陣列 ArrayList 類別就是實作自 List 介面,其他類別還有 LinkedList、Vector、Stack。

新增陣列(靜態方法)

List 介面提供 List.ofList.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 的實作類別。


#java







Related Posts

#1 擬訂計畫

#1 擬訂計畫

大腦開竅

大腦開竅

DJI Tello 的基礎操作與套件

DJI Tello 的基礎操作與套件


Comments