List 是有序集合,元素按插入順序排列(非自然排序),允許重複,支持索引訪問(0-based)。常用實現:ArrayList(動態數組)、LinkedList(雙向鏈表)。
Eclipse 自動推導泛型,命令行編譯會報警:unchecked or unsafe operations。正確寫法:
List<Object> list = new ArrayList<Object>(); // 显式指定泛型
List<Object> list = new ArrayList<Object>(); System.out.println(list.size()); // 輸出 0,而非初始容量 10
size() 返回元素個數,capacity 是底層數組長度。構造函數 ArrayList() 初始容量 10,但未添加元素時 size 為 0。
| 操作 | ArrayList | LinkedList |
|---|---|---|
| 隨機訪問(get/set) | O(1) 快 | O(n) 需遍歷 |
| 頭尾插入刪除 | O(n) 需移動數組 | O(1) 僅修改引用 |
| 中間插入刪除 | O(n) 移動+擴容 | O(n) 遍歷定位+修改引用 |
| 內存開銷 | 較小(連續數組) | 較大(節點對象+引用) |
兩者均非線程安全。多線程環境下需外部同步或使用 Collections.synchronizedList()、CopyOnWriteArrayList、或並發包下的實現。