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

Java 集合框架核心:Array、List、Map 區別、選型指南與底層原理

     編輯:Java 綜合教學

Java 集合框架核心:Array、List、Map 區別、選型指南與底層原理

三大體系分類

  1. Array / Arrays:固定長度,最高效隨機訪問
  2. Collection → List / Set:單列集合
  3. Map:鍵值對,微型數據庫

Array 與 Arrays 工具類

  • 優點:效率最高,內存連續
  • 缺點:長度固定,無法動態擴容,length 僅反映容量非實際元素數
  • Arrays 靜態方法:equals/fill/sort/binarySearch/System.arraycopy

Collection 子體系

接口實現類特征
ListArrayList, LinkedList, Vector有序、可重復、可按索引 get
SetHashSet, TreeSet, LinkedHashSet無序(HashSet)/有序(TreeSet)、不可重復

Map 子體系

實現類特征
HashMap數組+鏈表/紅黑樹,O(1) 查找,非線程安全
Hashtable同步、不允許 null key/value,已過時
TreeMap紅黑樹,Key 有序
LinkedHashMap維護插入/訪問順序

Collections 工具類

對應 Arrays,提供 sort/max/min/binarySearch/synchronizedList/unmodifiableList 等靜態方法。

選型決策樹

  • 元素固定、高性能隨機訪問 → Array
  • 動態列表、頻繁尾部增刪 → ArrayList(默認首選)
  • 頻繁頭部/中間增刪 → LinkedList(實現棧/隊列)
  • 去重、快速查找 → HashSet
  • 去重+有序遍歷 → TreeSet / LinkedHashSet
  • 鍵值映射、快速查找 → HashMap(默認首選)
  • 鍵有序遍歷 → TreeMap
  • 保持插入順序 → LinkedHashMap

⚠️ Vector 同步開銷大,避免使用;Collections.synchronizedList 或并發包替代。

核心注意點

  1. Collection 無 get(),必須 iterator() 遍歷
  2. List 有 get(index),支持隨機訪問
  3. Map 用 put(k,v)/get(k),keySet() 返回 Set(Key 唯一),values() 返回 Collection(Value 可重復)
  4. 哈希原理:hashCode() → 數組索引 → 碰撞鏈表/紅黑樹

結論

最常用四大組合:ArrayList, HashSet, HashMap, Array。

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