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

Java 模擬二維向量:Vector 嵌套與 HashMap 索引兩種實現

     編輯:Java 相關知識

Java 集合框架無原生二維向量,常用兩種輕量級模擬方案:

方案一:Vector 嵌套 Vector (行優先)

Vector<Vector<Object>> matrix = new Vector<>();
for (int i = 0; i < rows; i++) {
    Vector<Object> row = new Vector<>();
    for (int j = 0; j < cols; j++) row.add(null); // 初始化列
    matrix.add(row);
}
// 訪問 matrix.get(rowIndex).get(colIndex)

優點:動態擴容、索引訪問 O(1)、保留插入順序。缺點:非同步 (Vector 同步開銷大),現代代碼建議用 ArrayList<ArrayList<E>> 替代。

方案二:HashMap 以字符串鍵索引 (稀疏矩陣友好)

Map<String, Vector<Object>> matrix = new HashMap<>();
matrix.put("row0", new Vector<>(Arrays.asList("a", "b", "c")));
matrix.put("row1", new Vector<>(Arrays.asList("d", "e")));
// 訪問 matrix.get("row0").get(1) -> "b"

優點:行名可讀、稀疏數據存儲高效 (僅存非空行)。缺點:行順序無保證 (需 LinkedHashMap)、列訪問仍需列索引。

現代最佳實踐

  • 密集矩陣:List<List<E>> (ArrayList 嵌套) 或一維數組 E[] data = new E[rows * cols] 手動計算下標 row * cols + col (最高性能、緊湊內存)。
  • 稀疏矩陣:Map<Integer, Map<Integer, E>> (行號→列號→值) 或專用庫 (如 Apache Commons Math OpenMapRealMatrix、Colt、ND4J)。
  • 科學計算:引入 ND4J、EJML、Apache Commons Math 等線性代數庫,提供矩陣運算、分解、GPU 加速等高級能力。

原帖示例僅演示概念,實際項目請根據數據密度、運算需求、性能指標選型。

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