首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 集合框架核心:容器體系分類、七大介面與主流實現類深度解析

     編輯:Java 綜合教學

為什麼需要容器?

陣列長度固定、無法動態擴容、插入刪除效率低。Java 集合框架提供了一套完整的數據結構庫,解決「對象數量未知、生命週期不固定、需高效增刪查」的核心痛點。

容器兩大頂級介面:Collection 與 Map

  • Collection:單列元素集合,子介面 `List`(有序、可重複)、`Set`(無序、唯一)、`Queue`(隊列)。
  • Map:鍵值對映射,Key 唯一,Value 可重複。不繼承 Collection。

容器體系類圖

七大核心介面(含 Iterator、Comparable)

介面繼承關係核心語義
Collection根介面單列集合統一規範
Listextends Collection有序、可重複、支援下標訪問
Setextends Collection無序、元素唯一(靠 equals/hashCode)
Queueextends Collection隊列語義(FIFO/優先級)
Map獨立根介面鍵值對映射,Key 唯一
Iterator獨立統一遍歷機制,支援 foreach
Comparable獨立自然排序規則(compareTo)

主流實現類功能對比

List 實現

  • ArrayList:動態陣列,隨機訪問 O(1),尾部插入均攤 O(1),中間增刪 O(n)(需搬移)。首選場景:大量隨機讀取、尾部追加。
  • LinkedList:雙向鏈表,順序訪問優、首尾增刪 O(1),隨機訪問 O(n)。實現 `Deque`、`Queue`。首選場景:頻繁首尾操作、棧/隊列。

Set 實現

  • HashSet:基於 `HashMap`,靠 `hashCode()`/`equals()` 去重,查找 O(1),無序。元素必須正確重寫 hashCode/equals。
  • TreeSet:紅黑樹實現,自然排序或 Comparator 排序,查找/插入/刪除 O(log n),有序。需要元素實現 Comparable 或提供 Comparator。
  • LinkedHashSet:鏈表維護插入順序 + 雜湊表快速查找,兼顧有序與性能。

Queue 實現

  • LinkedList:實現 `Deque`,支援雙端隊列操作。
  • PriorityQueue:優先隊列,堆結構,每次彈出優先級最高元素,可自定義 `Comparator`。

Map 實現

  • HashMap:雜湊表(JDK8 引入紅黑樹優化碰撞),核心鍵值存儲,查找/插入 O(1)。
  • TreeMap:紅黑樹,Key 有序,範圍查詢高效,性能遜於 HashMap。
  • LinkedHashMap:鏈表維護插入/訪問順序 + 雜湊快速查找,適合 LRU 緩存實現。

實戰代碼:向上轉型與泛型

import java.util.*;

public class TestCollection {
    public static void main(String[] args) {
        // 向上轉型為 List(方法更豐富),泛型指定元素類型
        List<Integer> list = new ArrayList<>();
        for (int i = 0; i < 10; i++) list.add(i);
        for (Integer i : list) System.out.print(i + ", ");
    }
}

HashSet 去重演示

Set<Integer> set = new HashSet<>();
Random r = new Random(47);
for (int i = 0; i < 10000; i++) set.add(r.nextInt(30));
System.out.println(set); // 輸出 <=30 個唯一元素

TreeSet 排序演示

Set<Integer> sorted = new TreeSet<>();
for (int i = 0; i < 10000; i++) sorted.add(r.nextInt(20));
System.out.println(sorted); // 輸出有序 0-19

總結與進階方向

掌握容器分類、核心介面語義、主流實現的底層數據結構(陣列/鏈表/紅黑樹/雜湊表)與性能特徵,是寫出高效、正確 Java 代碼的基礎。後續需深入:

  1. 各容器核心方法源碼分析(擴容、樹旋轉、雜湊碰撞處理)。
  2. 線程安全容器:`Collections.synchronizedXxx`、`ConcurrentHashMap`、`CopyOnWriteArrayList` 原理。
  3. Stream API 與集合高效轉換、並行處理。

容器總結圖

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved