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

Java 集合框架核心詳解:List、Set、Map 實戰指南

     編輯:Java 綜合教學

Java 集合框架核心詳解:List、Set、Map 實戰指南

Java 集合框架是 Java 程式設計中處理資料組的核心工具。它提供了統一的架構來儲存、操作物件群組,極大地簡化了資料處理的複雜度。本文系統梳理集合體系結構、核心介面實現與實戰要點。

集合體系總覽

Java 集合主要分為兩大體系:

  • Collection 介面:單一元素集合,下分 List(有序、可重複)、Set(無序、唯一)、Queue(佇列)。
  • Map 介面:鍵值對映射集合,鍵唯一,值可重複。

核心實現類深度解析

1. List 介面與 ArrayList

  • 特性:有序、可重複、支援索引隨機存取。
  • ArrayList 底層:動態陣列,擴容機制為 1.5 倍。查詢快(O(1)),增刪慢(需位移)。
  • 常用操作:
    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);                          // 刪除元素

2. Set 介面與 HashSet

  • 特性:無序、元素唯一(依賴 hashCode() 與 equals())、允許一個 null。
  • 遍歷方式:無 get() 方法,僅支援 Iterator 或 for-each。順序不固定。

3. Map 介面與 HashMap

  • 特性:鍵值對存儲,鍵唯一,基於雜湊表實現,查找極快(O(1))。

泛型:類型安全的基石

泛型在編譯期進行類型檢查,避免執行時 ClassCastException,並省去強制轉型。

List<Course> courseList = new ArrayList<>(); // 僅接受 Course 及其子類
// courseList.add("String"); // 編譯報錯
Course c = courseList.get(0); // 直接獲取 Course 類型

注意:泛型不支援基本類型(如 int),必須使用包裝類(Integer)。

遍歷最佳實踐

  • for-each:語法簡潔,適用於唯讀遍歷。
  • Iterator:遍歷過程中需安全移除元素時使用(iterator.remove())。
  • Lambda (Java 8+):list.forEach(System.out::println);

效能選型指南

場景推薦實現理由
頻繁隨機存取、尾部增刪ArrayList陣列底層,獲取快
頻繁頭部/中間增刪LinkedList鏈表底層,增刪不需位移
去重、唯一性檢查HashSet雜湊集合,查找 O(1)
鍵值映射、快速查找HashMap雜湊表,核心場景首選
保持插入順序LinkedHashSet/Map雙向鏈表維護順序
鍵有序遍歷TreeSet/Map紅黑樹,自然序或比較器排序

常見陷阱避坑

  1. 並發修改異常:遍歷時直接呼叫 list.remove() → 使用 Iterator 或 Java 8 removeIf()。
  2. 自訂物件作為 Key/Set 元素:必須正確重寫 hashCode() 和 equals(),否則唯一性失效。
  3. 初始容量預估:大量資料時指定 new ArrayList<>(1000) 或 new HashMap<>(1024) 減少擴容開銷。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved