Java 集合框架是 Java 程式設計中處理資料組的核心工具。它提供了統一的架構來儲存、操作物件群組,極大地簡化了資料處理的複雜度。本文系統梳理集合體系結構、核心介面實現與實戰要點。
Java 集合主要分為兩大體系:
List(有序、可重複)、Set(無序、唯一)、Queue(佇列)。List<Course> courses = new ArrayList<>();
courses.add(new Course("1", "Java")); // 尾部新增
courses.add(0, new Course("0", "Python")); // 指定位置插入
courses.addAll(Arrays.asList(courseArray)); // 批次新增
Course c = courses.get(index); // 索引獲取
courses.set(index, newCourse); // 修改元素
courses.remove(index); // 刪除元素
hashCode() 與 equals())、允許一個 null。get() 方法,僅支援 Iterator 或 for-each。順序不固定。泛型在編譯期進行類型檢查,避免執行時 ClassCastException,並省去強制轉型。
List<Course> courseList = new ArrayList<>(); // 僅接受 Course 及其子類
// courseList.add("String"); // 編譯報錯
Course c = courseList.get(0); // 直接獲取 Course 類型
注意:泛型不支援基本類型(如 int),必須使用包裝類(Integer)。
iterator.remove())。list.forEach(System.out::println);| 場景 | 推薦實現 | 理由 |
|---|---|---|
| 頻繁隨機存取、尾部增刪 | ArrayList | 陣列底層,獲取快 |
| 頻繁頭部/中間增刪 | LinkedList | 鏈表底層,增刪不需位移 |
| 去重、唯一性檢查 | HashSet | 雜湊集合,查找 O(1) |
| 鍵值映射、快速查找 | HashMap | 雜湊表,核心場景首選 |
| 保持插入順序 | LinkedHashSet/Map | 雙向鏈表維護順序 |
| 鍵有序遍歷 | TreeSet/Map | 紅黑樹,自然序或比較器排序 |
list.remove() → 使用 Iterator 或 Java 8 removeIf()。hashCode() 和 equals(),否則唯一性失效。new ArrayList<>(1000) 或 new HashMap<>(1024) 減少擴容開銷。