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

Java 集合框架核心:List 與 Set 兩大容器體系深度解析與選型指南

     編輯:Java 程式設計入門

Java 2 重新設計的容器類庫:保存物件的藝術

Joshua Bloch 重構的 Java 2 容器框架分兩大族群:Collection(單一元素序列)與Map(鍵值對)。本文聚焦 Collection 下最核心的 List(有序、可重複) 與 Set(唯一、無序) 體系。

迭代器:統一遍歷抽象

  • Iterator:單向移動,next()/hasNext()/remove(),輕量級物件。
  • ListIterator:雙向遍歷,支援插入/刪除/定位,專為 List 設計。

List 介面與實作選型

實作底層結構隨機存取中間增刪適用場景
ArrayList動態陣列O(1) 極快O(n) 慢,需搬移預設首選,頻繁讀取、少量尾部增刪
LinkedList雙向鏈表O(n) 慢O(1) 快,僅調整指標頻繁中間增刪、堆疊/佇列/雙端佇列

關鍵建議:ListIterator 僅用於 ArrayList 逆向遍歷,嚴禁用於 ArrayList 插刪(效能災難)。LinkedList 獨有 addFirst/Last、getFirst/Last、removeFirst/Last 可直接作堆疊/佇列。

Set 介面與實作選型

實作底層結構查詢速度順序保證適用場景
HashSet雜湊表O(1) 最快無序高頻查詢、不需順序
TreeSet紅黑樹O(log n)自然排序/定製 Comparator需有序序列、區間查詢
LinkedHashSet雜湊表+雙向鏈表O(1)插入順序需快速查詢且保持插入序

核心契約:存入 Set 的物件必須正確覆寫 equals() 與 hashCode(),否則唯一性判斷失效。自訂類別若需 TreeSet 排序,須實作 Comparable 或提供 Comparator。

Map 簡註

Map 儲存鍵值對,可輸出 keySet()、values()、entrySet(),支援多維嵌套(值為 Map),典型應用:資料字典、快取、索引。

選型決策樹

  1. 需鍵值對 → Map
  2. 需順序且可重複 → ArrayList (讀多) / LinkedList (寫多中間)
  3. 需唯一性 → HashSet (查詢最快) / LinkedHashSet (保留插入序) / TreeSet (需排序)

掌握容器特性與契約,是寫出高效、正確 Java 代碼的基礎功力。

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