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

Java 經典範例 004:Vector 集合增刪改查完整操作示範

     編輯:Java 程式設計入門

範例目標

示範 `java.util.Vector` (線程安全的動態陣列) 核心操作:建構二維向量、插入、刪除、更新、列印。雖 `ArrayList` 為現代首選,但 Vector 仍存在於舊代碼庫與特定線程安全場景。

完整代碼 (現代化重構版)

import java.util.Vector;

public class OperateVector {

    /** 建構 4x4 二維向量 */
    public Vector> buildVector() {
        Vector> matrix = new Vector<>();
        for (int i = 0; i < 4; i++) {
            Vector row = new Vector<>();
            for (int j = 0; j < 4; j++) {
                row.add("Vector(" + i + ")(" + j + ")");
            }
            matrix.add(row);
        }
        return matrix;
    }

    /** 插入元素到指定位置 */
    public Vector insert(Vector vec, int index, Object value) {
        if (index < 0 || index > vec.size()) {
            System.err.println("索引越界: " + index);
            return null;
        }
        vec.insertElementAt(value, index);
        return vec;
    }

    /** 刪除指定位置元素 */
    public Vector delete(Vector vec, int index) {
        if (index < 0 || index >= vec.size()) {
            System.err.println("索引越界: " + index);
            return null;
        }
        vec.removeElementAt(index);
        return vec;
    }

    /** 更新指定位置元素 */
    public Vector update(Vector vec, int index, Object value) {
        if (index < 0 || index >= vec.size()) {
            System.err.println("索引越界: " + index);
            return null;
        }
        vec.setElementAt(value, index);
        return vec;
    }

    /** 列印向量內容 */
    public void print(String label, Vector vec) {
        System.out.println(label + " 內容:");
        for (Object o : vec) System.out.println("  " + o);
    }

    /** 主程式示範 */
    public static void main(String[] args) {
        OperateVector ov = new OperateVector();
        Vector> matrix = ov.buildVector();
        ov.print("原始矩陣", matrix);

        // 對第一維向量操作示範
        Vector firstRow = matrix.get(0);
        ov.insert(firstRow, 2, "插入的資料");
        ov.print("插入後", firstRow);

        ov.update(firstRow, 2, "修改的資料");
        ov.print("修改後", firstRow);

        ov.delete(firstRow, 2);
        ov.print("刪除後", firstRow);
    }
}

Vector vs ArrayList 核心差異

特性VectorArrayList
線程安全所有公開方法 `synchronized`非線程安全
擴容策略預設雙倍 (可指定 `capacityIncrement`)1.5 倍
效能同步開銷大單執行緒下更快
推薦場景舊代碼維護、簡單多執行緒共享列表現代開發首選

現代替代方案

  • 單執行緒:`List list = new ArrayList<>();`
  • 多執行緒讀多寫少:`List list = new CopyOnWriteArrayList<>();`
  • 高併發佇列:`BlockingQueue q = new LinkedBlockingQueue<>();`
  • 並發 Map:`Map map = new ConcurrentHashMap<>();`

遺留代碼遷移清單

  1. 將 `Vector` → `ArrayList` (確認無多執行緒競爭)。
  2. 將 `Enumeration` → `Iterator` / `for-each`。
  3. 將 `insertElementAt` → `add(index, elem)`、`removeElementAt` → `remove(index)`、`setElementAt` → `set(index, elem)`、`elementAt` → `get(index)`。
  4. 移除 `capacityIncrement` 相關邏輯 (ArrayList 無此參數)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved