Vector 是 JDK 1.0 就存在的動態數組實現,實現了 List 介面。與 ArrayList 最大區別在於:**所有方法均為 synchronized 同步**,因此線程安全但性能較差。現代開發中幾乎完全被 ArrayList + 顯式同步或 Collections.synchronizedList 替代,僅在極少數遺留代碼中出現,「了解即可」。
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());
}
| 特性 | Vector | ArrayList |
|---|---|---|
| 線程安全 | 是(方法級 synchronized) | 否 |
| 擴容策略 | 默認 2 倍 | 1.5 倍 |
| 遍歷方式 | Enumeration / Iterator | Iterator / ListIterator / forEach |
| 推薦場景 | 極少數遺留系統維護 | 所有新代碼首選 |
ArrayList。CopyOnWriteArrayList。Collections.synchronizedList(new ArrayList<>())。Vector 是 Java 早期設計的產物,同步粒度過粗導致性能瓶頸。理解其存在僅為維護舊代碼,**新項目嚴禁使用 Vector**。