編譯錯誤 Cannot instantiate the type List<Integer> 因嘗試直接實例化介面 List。Java 中介面不可實例化,必須使用實作類(如 ArrayList、LinkedList)。
List<Integer> list = new List<Integer>(); // ❌ 編譯失敗
List<Integer> list = new ArrayList<>(); // ✅ Java 7+ 鑽石語法
// 或
List<Integer> list = new LinkedList<>(); // ✅ 適合頻繁頭尾增刪
| 實作類 | 底層結構 | 優勢場景 | 劣勢 |
|---|---|---|---|
ArrayList | 動態陣列 | 隨機存取、尾部新增、記憶體緊湊 | 中間插入/刪除 O(n) |
LinkedList | 雙向鏈表 | 頻繁頭尾/中間增刪、佇列/棧 | 隨機存取 O(n)、記憶體開銷大 |
Vector | 同步動態陣列 | 舊版相容、線程安全 | 效能差,推薦 Collections.synchronizedList |
CopyOnWriteArrayList | 寫時複製陣列 | 讀多寫少、並發遍歷 | 寫入開銷大、記憶體佔用高 |
List<T> list = new ArrayList<>(); 便於後續替換實作new ArrayList<>(expectedSize) 減少擴容複製List.of(1,2,3) (Java 9+) 或 Collections.unmodifiableList()List<Integer> 而非 List