Java 集合框架的核心是 Collection 接口,它是所有集合類的根接口。Collection 主要分為兩大分支:List(有序、允許重複)和 Set(無序、不允許重複)。這兩個接口均繼承自 Collection,並各自擁有豐富的實現類。
為了減少重複代碼,框架提供了 AbstractCollection 抽象類,實現了 Collection 中大部分方法(除 iterator() 和 size())。AbstractList 和 AbstractSet 分別繼承 AbstractCollection 並實現 List、Set 接口,進一步封裝了具體操作,方便 ArrayList、LinkedList、HashSet 等類直接繼承使用。
Collection 定義了 iterator() 方法返回 Iterator,用於統一遍歷集合。ListIterator 是 List 專用的雙向迭代器,支持正向/反向遍歷、索引定位及元素修改,功能更強大。
interface Collection<E> extends Iterable<E> {}
定義了集合的基本操作:添加、刪除、清空、遍歷、判空、大小、包含判斷等。所有子類必須提供無參構造函數和接受 Collection 參數的構造函數,便於類型轉換。
interface List<E> extends Collection<E> {}
特點:有序隊列,每個元素有索引(從 0 開始),允許重複元素。除了繼承 Collection 的方法,List 還新增了按索引增刪改查、子列表截取、ListIterator 等專有 API。
interface Set<E> extends Collection<E> {}
特點:數學意義上的集合,不包含重複元素。API 與 Collection 完全一致,無額外擴展。
實現了除 iterator()、size() 外的所有方法,為具體集合類提供基礎模板。
繼承 AbstractCollection,實現 List 接口,補全了 iterator() 實現,僅留下 size()、get(int) 為抽象方法。
繼承 AbstractCollection,實現 Set 接口,同樣只需實現 iterator() 和 size()。
基本迭代器,提供 hasNext()、next()、remove()。採用 fail-fast 機制:遍歷過程中若集合被其他線程修改,將拋出 ConcurrentModificationException。
繼承 Iterator,新增 add()、hasPrevious()、previous()、nextIndex()、previousIndex()、set() 等方法,專為 List 設計,支持雙向遍歷與精確索引控制。