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

Java 集合框架核心對比:Array、List、Map 區別與選型指南

     編輯:Java 相關知識

三大體系速覽

體系核心接口/類特點
ArrayArray、Arrays固定長度、隨機訪問最快、存基本類型/對象引用
CollectionList(ArrayList/LinkedList/Vector)、Set(HashSet/TreeSet)可變長、存對象引用、List 有序可重復、Set 唯一
MapHashMap、Hashtable、TreeMap鍵值對、Key 唯一、Value 可重復

Array vs Collection 核心差異

  • Array 長度固定,Collection 動態擴容
  • Array 可存基本類型,Collection 僅存對象引用(自動裝箱/拆箱)
  • Array 知曉容量 length,Collection 需 size() 獲取實際元素數

List 實現選型

實現底層結構優勢劣勢適用場景
ArrayList動態數組隨機訪問 O(1)、內存緊湊中間增刪 O(n) 需移位默認首選、讀多寫少
LinkedList雙向鏈表頭尾增刪 O(1)、實現 Deque/Queue隨機訪問 O(n)、內存開銷大頻繁增刪、棧/隊列
Vector同步數組線程安全性能差、已過時極少用,建議用 Collections.synchronizedList

Set 實現選型

  • HashSet:HashMap 鍵集,查找/插入 O(1),無序 → 默認首選
  • TreeSet:紅黑樹,有序(自然序/Comparator),O(log n) → 需排序時用

Map 實現選型

  • HashMap:數組+鏈表/紅黑樹,O(1) 查找 → 高頻首選
  • Hashtable:同步、不允許 null 鍵值 → 已過時,用 ConcurrentHashMap
  • TreeMap:紅黑樹,Key 有序 → 需範圍查詢/排序時用

工具類

  • Arrays:針對 Array 的排序、查找、填充、複製
  • Collections:針對 Collection 的排序、查找、線程安全包裝、最大/最小值

選型決策樹

  1. 元素數量固定、極致性能 → Array
  2. 需頻繁按索引訪問 → ArrayList
  3. 需頻繁頭尾增刪/實現隊列棧 → LinkedList
  4. 需唯一性、快速查找 → HashSet
  5. 需唯一且有序 → TreeSet
  6. 鍵值映射、高頻查找 → HashMap
  7. 鍵需有序/範圍查詢 → TreeMap

常見誤區

  • Collection 無 get(index),需迭代器遍歷
  • Map.keySet() 返回 Set(Key 唯一),values() 返回 Collection(Value 可重複)
  • HashMap 依賴 hashCode() 定位桶位,equals() 確認相等 → 自定義 Key 必須重寫兩者
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved