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

Java Vector 類完整指南:特性、建構子、核心方法與實戰範例

     編輯:Java 相關知識

前言

java.util.Vector 是 Java 1.0 即存在的舊式動態陣列實作,雖然 ArrayList 取代其成為主流,但 Vector 因 執行緒安全 特性,在多執行緒環境、舊系統維護、特定框架整合中仍具不可替代地位。本文系統整理 Vector 核心知識點。

Vector vs ArrayList 關鍵差異

特性VectorArrayList
執行緒安全所有公有方法 synchronized非同步
擴容策略預設 2 倍(可指定 capacityIncrement)1.5 倍
傳統方法保留 addElement、elementAt 等 1.0 API僅實作 List 介面
效能同步開銷大單執行緒下更快

四種建構子

// 1. 預設容量 10,增量 2 倍
Vector v1 = new Vector();

// 2. 指定初始容量
Vector v2 = new Vector(20);

// 3. 指定容量與增量
Vector v3 = new Vector(10, 5); // 滿時每次 +5

// 4. 從現有 Collection 建立
Vector v4 = new Vector(Arrays.asList("A", "B", "C"));

核心方法分類速查

新增元素

  • addElement(E obj):尾端新增(同步)
  • insertElementAt(E obj, int index):指定位置插入
  • setElementAt(E obj, int index):替換指定位置元素

刪除元素

  • removeElement(Object obj):移除首個匹配物件
  • removeElementAt(int index):移除指定索引
  • removeAllElements():清空向量

查詢與存取

  • elementAt(int index) / get(int index):取得元素
  • firstElement() / lastElement():首/尾元素
  • indexOf(Object o) / lastIndexOf(Object o):搜尋索引
  • contains(Object o):是否包含
  • size() / capacity() / isEmpty()

迭代

// Enumeration(舊式)
Enumeration<String> e = v.elements();
while (e.hasMoreElements()) System.out.println(e.nextElement());

// Iterator(現代)
for (String s : v) System.out.println(s);

完整實戰範例

import java.util.Vector;

public class VectorDemo {
    public static void main(String[] args) {
        Vector<Number> v = new Vector<>(3, 2); // 初始 3,增量 2
        System.out.println("初始 size=" + v.size() + " capacity=" + v.capacity());

        v.addElement(1);
        v.addElement(2);
        v.addElement(3); // 第 3 次擴容觸發
        System.out.println("加入 3 個後 capacity=" + v.capacity()); // 5

        v.addElement(4.5);
        System.out.println("加入 1 個後 capacity=" + v.capacity()); // 5

        v.addElement(5);
        v.addElement(6); // 第 6 個觸發再擴容
        System.out.println("加入 6 個後 capacity=" + v.capacity()); // 7

        System.out.println("首元素:" + v.firstElement());
        System.out.println("尾元素:" + v.lastElement());
        System.out.println("是否包含 3:" + v.contains(3));

        // 反向遍歷示範
        for (int i = v.size() - 1; i >= 0; i--) {
            System.out.print(v.get(i) + " ");
        }
    }
}

輸出結果

初始 size=0 capacity=3
加入 3 個後 capacity=5
加入 1 個後 capacity=5
加入 6 個後 capacity=7
首元素:1
尾元素:6
是否包含 3:true
6 5 4.5 3 2 1

最佳實務與避坑指南

  1. 非多執行緒環境請用 ArrayList:避免不必要的同步開銷。
  2. 需執行緒安全集合:優先考慮 Collections.synchronizedList(new ArrayList<>()) 或 CopyOnWriteArrayList(讀多寫少),Vector 同步粒度較粗,高併發下擴容鎖爭用嚴重。
  3. 指定初始容量:可減少擴容次數,提升大量資料載入效能。
  4. 勿混用舊/新 API:如 addElement 與 add 混用易造成認知混亂,統一使用 List 介面方法。

結語

Vector 是 Java 集合框架的「活化石」,理解其同步機制、擴容策略與傳統 API,有助於維護舊系統、面試應對與特定多執行緒場景選型。新專案首選 ArrayList 或 java.util.concurrent 套件。

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