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

Java 靜態陣列與動態陣列 (ArrayList/Vector/LinkedList) 深度對比

     編輯:Java 相關知識

靜態陣列限制

長度固定,無法運行期動態增減元素。

動態陣列核心實現

Java 集合框架提供三大 List 實現,底層儲存模擬陣列,元素型別統一為 Object (泛型擦除後),可存放任意物件。

ArrayList & Vector:動態陣列

  • 擴容機制:Vector 預設 2 倍,ArrayList 1.5 倍。Vector 可指定增量。
  • 同步化:Vector 方法級 synchronized (執行緒安全);ArrayList 非同步。多執行緒建議用 Collections.synchronizedList 或 CopyOnWriteArrayList。
  • 效能特徵:
    • 隨機存取 get(index):O(1)
    • 尾部增刪:O(1) 攤銷
    • 中間增刪:O(n) 需位移

LinkedList:雙向鏈結串列

  • 隨機存取:O(n) 需遍歷
  • 任意位置增刪:O(1) 僅調整指標
  • 無容量概念:按需分配節點

選型決策表

場景推薦理由
頻繁隨機存取、尾部操作、單執行緒ArrayList效能最佳、無同步開銷
頻繁隨機存取、多執行緒Collections.synchronizedList(ArrayList) / CopyOnWriteArrayList執行緒安全、效能優於 Vector
頻繁中間增刪LinkedListO(1) 增刪、無位移開銷
需指定初始容量、避免擴容ArrayList(int initialCapacity) / Vector(int initialCapacity, int capacityIncrement)減少記憶體重分配

總結

理解底層資料結構 (動態陣列 vs 鏈結串列) 與同步策略,依訪問模式與執行緒需求選型,而非盲目預設使用 Vector。

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