首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java HashMap 與陣列互相轉換完整指南

     編輯:程式設計疑難解答

前言

在 Java 開發中,經常需要在 HashMap 與陣列之間進行資料轉換。本文將詳細說明如何將 Map 的鍵值對轉換為陣列,以及如何從陣列重建 Map,並提供完整的程式碼範例。

Map 轉換為兩個陣列(鍵陣列與值陣列)

最常見的做法是遍歷 Map.entrySet(),將鍵與值分別存入兩個獨立的陣列中。

Map<String, String> map = new HashMap<>();
map.put("1", "value1");
map.put("2", "value2");
map.put("3", "value3");

String[] keys = new String[map.size()];
String[] values = new String[map.size()];

int index = 0;
for (Map.Entry<String, String> entry : map.entrySet()) {
    keys[index] = entry.getKey();
    values[index] = entry.getValue();
    index++;
}

注意: 原始程式碼中使用 key[key.length]=key 是錯誤的寫法,會導致 ArrayIndexOutOfBoundsException。正確做法是使用索引變數逐一填入。

Map 轉換為二維陣列(每組鍵值對為一個子陣列)

若希望保持鍵值對的關聯性,可將每組 Entry 封裝為長度為 2 的字串陣列,再存入一個二維陣列或 List 中。

List<String[]> mapList = new ArrayList<>();
for (Map.Entry<String, String> entry : map.entrySet()) {
    String[] pair = { entry.getKey(), entry.getValue() };
    mapList.add(pair);
}
// 若必須用陣列
String[][] mapArray = mapList.toArray(new String[0][]);

從陣列重建 Map

若已有鍵陣列與值陣列,且長度相同、順序對應,可透過迴圈重建 Map:

Map<String, String> restoredMap = new HashMap<>();
for (int i = 0; i < keys.length; i++) {
    restoredMap.put(keys[i], values[i]);
}

若是二維陣列 String[][],則:

for (String[] pair : mapArray) {
    if (pair.length == 2) {
        restoredMap.put(pair[0], pair[1]);
    }
}

總結

  • 轉換時務必注意陣列索引邊界,建議使用 List 先收集再轉陣列,避免手動管理索引。
  • 若需保留鍵值對關聯,二維陣列或 List<String[]> 優於兩個獨立陣列。
  • 重建 Map 時,確保鍵的唯一性,否則後放入的值會覆蓋先前的值。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved