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

Java 集合框架:Vector 與 ArrayList 核心差異深度對比

     編輯:Java 綜合教學

共同點

  • 均實現 List<E> 接口,有序、允許重複、支援下標訪問。
  • 底層均為動態擴容的 Object[] elementData 陣列。

核心差異:擴容策略

ArrayList(1.5 倍 + 1)

int newCapacity = (oldCapacity * 3) / 2 + 1;
// 例:10 → 16 → 25 → 38...

Vector(2 倍或自定義增量)

int newCapacity = (capacityIncrement > 0) 
    ? (oldCapacity + capacityIncrement) 
    : (oldCapacity * 2);
// 預設 capacityIncrement = 0 → 翻倍
// 例:10 → 20 → 40 → 80...

線程安全性

其他細節差異

  • 枚舉器:Vector 返回 Enumeration(舊)+ Iterator;ArrayList 僅 Iterator/ListIterator。
  • 預設容量:兩者均為 10。
  • 序列化:Vector 寫入 capacityIncrement,ArrayList 不寫入擴容因子。

選型建議

  • 單線程/高性能:首選 ArrayList。
  • 多線程讀多寫少:CopyOnWriteArrayList。
  • 多線程寫多:Collections.synchronizedList(new ArrayList()) 或並發包 ConcurrentLinkedQueue(無序)。
  • 避免使用 Vector:歷史遺留類,JDK 9+ 標註 @Deprecated 傾向。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
特性VectorArrayList
方法級同步所有公共方法 synchronized無同步,非線程安全
性能低(鎖開銷)高(無鎖)
替代方案已過時Collections.synchronizedList 或 CopyOnWriteArrayList