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