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

Java 集合框架核心:List 與 Set 深度解析與選型指南

     編輯:Java 相關知識

集合體系概覽

Java 2 重新設計的集合類庫核心目標是「保存物件」,分兩大體系:

  • Collection:獨立元素序列。List 維護插入順序;Set 不允許重複。
  • Map:鍵值對集合,可轉為鍵 Set、值 Collection 或鍵值對 Set;支援多維擴充(值為 Map)。

迭代器模式

Iterator 統一遍歷介面,屬輕量級物件。核心方法:iterator()、next()、hasNext()、remove()。ListIterator 專為 List 設計,支援雙向遍歷、插入、刪除。

List 介面與實作比較

實作底層結構隨機存取中間插入/刪除特有方法適用場景
ArrayList動態陣列快 (O(1))慢 (O(n)),需移動元素無頻繁隨機存取、少量修改
LinkedList雙向鏈結串列慢 (O(n))快 (O(1)),僅調整指標addFirst/Last, getFirst/Last, removeFirst/Last頻繁插入刪除、堆疊/佇列/雙向佇列

建議:ListIterator 僅用於 LinkedList 雙向操作;ArrayList 僅用反向遍歷,避免插入刪除效能陷阱。

Set 介面與實作比較

Set 不保證順序,元素需正確實作 equals()(HashSet 另需 hashCode())。

實作底層結構查詢速度順序特性適用場景
HashSet雜湊表最快 (O(1))無序高頻查詢、不需排序
TreeSet紅黑樹O(log n)自然順序/Comparator 排序需有序遍歷、範圍查詢
LinkedHashSet雜湊表 + 雙向鏈結接近 HashSet插入順序需快速查詢且保持插入序

關鍵點:自訂類別存入 TreeSet 或需排序的 Set 必須實作 Comparable 並定義 compareTo()。

選型決策樹

  1. 需要鍵值對?→ Map (HashMap/TreeMap/LinkedHashMap)
  2. 允許重複?→ List (ArrayList/LinkedList)
  3. 不允許重複?
    • 需排序?→ TreeSet
    • 需插入序?→ LinkedHashSet
    • 單純快速查重?→ HashSet
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved