集合必須可迭代,故所有集合接口繼承 Iterable<T>,其唯一方法:
Iterator<T> iterator() // 返回迭代器,用於遍歷 T 類型元素
統一返回 Iterator 接口,使所有集合子類均可迭代顯示元素。
public interface Collection<E> extends Iterable<E>
定位:集合層次結構根接口,表示一組對象(元素)。
特性:
Set、List)實現。包/多集合:可能包含重復元素的無序集合,應直接實現此接口。
所有通用實現類(通常通過子接口間接實現)應提供:
Collection(Collection<? extends E> c):創建與參數元素相同的新集合(支持實現類型間轉換復制)。接口無法強制構造器,但 Java 平台庫所有通用實現均遵守。
修改集合的方法(如 add、remove、clear)若集合不支持該操作,拋 UnsupportedOperationException。調用無效時可能但不一定拋出異常(如向不可修改空集合 addAll 可能不拋異常)。
null、限制類型。NullPointerException 或 ClassCastException)。false(實現定)。此類異常在規范中標記為「可選」。
如 contains(Object o) 規范:o==null ? e==null : o.equals(e)。實現可優化(如先比較 hashCode),Object.hashCode() 規范保證哈希碼不等則不等。實現可自由利用基礎 Object 方法行為。
public interface Iterator<E>
兩大改進:
remove())。hasNext()/next() 替代 hasMoreElements()/nextElement())。| 接口 | 繼承關係 | 核心特點 | 典型實現 |
|---|---|---|---|
| Iterable | — | 可迭代標記 | — |
| Collection | extends Iterable | 根接口,基本增刪改查 | — |
| Set | extends Collection | 無序、不重復 | HashSet, TreeSet, LinkedHashSet |
| List | extends Collection | 有序、可重復、下標訪問 | ArrayList, LinkedList, Vector |
| Queue | extends Collection | 隊列操作(入隊/出隊) | PriorityQueue, ArrayDeque |
| Map | —(不繼承 Collection) | 鍵值對映射 | HashMap, TreeMap, LinkedHashMap |
Java 集合框架以 Iterable/Iterator 為統一遍歷基石,Collection 為根接口派生 Set/List/Queue 三大支系,Map 獨立並行。理解接口契約與實現特性,是選對集合、寫出高效代碼的前提。