Java 平台提供了一套統一的集合框架,主要由一組操作對象的介面組成。不同介面描述不同的資料結構類型,形成了清晰的層次體系。集合框架圖可分為三大部分:集合介面(6個)、抽象類(5個)、實現類(8個)。理解介面即掌握框架精髓,實際開發中應面向介面編程,以便靈活切換底層資料結構。
Collection 是所有集合的根介面,表示一組允許重複的對象。主要方法包括:
add(Object)、remove(Object)size()、isEmpty()、contains(Object)、iterator()containsAll(Collection)、addAll(Collection)、clear()、removeAll(Collection)、retainAll(Collection)toArray()、toArray(Object[])注意:集合不提供 get() 方法,遍歷必須使用 Iterator。
繼承 Collection,不允許重複元素,內部有排序機制。常用實現:HashSet(無序)、TreeSet(有序)、LinkedHashSet(插入序)。
繼承 Collection,允許重複,按插入順序存儲。主要實現:ArrayList(動態陣列,查詢快)、LinkedList(雙向鏈表,增刪快)、Vector(線程安全,較舊)。List 新增了面向位置的操作:get(int)、set(int, Object)、add(int, Object)、remove(int)、subList(int, int)。
鍵值對集合,Key 不可重複,Value 可重複。常用實現:HashMap(無序)、TreeMap(按 Key 排序)、LinkedHashMap(插入序/訪問序)、Hashtable(線程安全,較舊)。
提供統一遍歷方式:hasNext()、next()、remove()。具有 fail-fast 機制,若遍歷過程中集合被其他線程修改,會拋出 ConcurrentModificationException。
提供 Collection 介面的骨架實現,子類只需實現 iterator() 和 size(),其他方法可選擇覆寫。
List list = new ArrayList<>(); )。remove() 或並發集合。