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

Java 向量類 Vector 簡析:已被 ArrayList 取代的歷史遺留類

     編輯:Java 綜合教學

Vector 概述

Vector 是 JDK 1.0 就存在的動態數組實現,實現了 List 介面。與 ArrayList 最大區別在於:**所有方法均為 synchronized 同步**,因此線程安全但性能較差。現代開發中幾乎完全被 ArrayList + 顯式同步或 Collections.synchronizedList 替代,僅在極少數遺留代碼中出現,「了解即可」。

特有遍歷方式:Enumeration

Vector 提供專屬遍歷介面 Enumeration,類似 Iterator 但功能更少(無 remove、無 forEachRemaining)。

代碼示例

Vector<String> v = new Vector<>();
v.addElement("abc1");
v.addElement("abc2");
v.addElement("abc3");
v.addElement("abc4");

Enumeration<String> en = v.elements(); // Vector 特有獲取方式
while (en.hasMoreElements()) {
    System.out.println("nextelement: " + en.nextElement());
}

核心差異對比

特性VectorArrayList
線程安全是(方法級 synchronized)否
擴容策略默認 2 倍1.5 倍
遍歷方式Enumeration / IteratorIterator / ListIterator / forEach
推薦場景極少數遺留系統維護所有新代碼首選

現代替代方案

  • 單線程:直接用 ArrayList。
  • 多線程只讀多寫少:CopyOnWriteArrayList。
  • 需手動同步:Collections.synchronizedList(new ArrayList<>())。

結語

Vector 是 Java 早期設計的產物,同步粒度過粗導致性能瓶頸。理解其存在僅為維護舊代碼,**新項目嚴禁使用 Vector**。

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