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

Java 靜態擴容數組與數組轉 Map 實用代碼範例

     編輯:Java 相關知識

前言

Java 數組長度固定,無法直接擴容。本文提供兩個實用工具方法:基於反射的數組動態擴容,以及利用 Apache Commons Lang 將二維數組轉換為 Map。

1. 靜態擴容數組長度

通過 java.lang.reflect.Array 創建新數組並複製原有內容:

/**
 * 重新分配數組大小並保留原有內容
 * @param oldArray 原數組
 * @param newSize 新大小
 * @return 新數組
 */
private static Object resizeArray(Object oldArray, int newSize) {
    int oldSize = java.lang.reflect.Array.getLength(oldArray);
    Class elementType = oldArray.getClass().getComponentType();
    Object newArray = java.lang.reflect.Array.newInstance(elementType, newSize);
    int preserveLength = Math.min(oldSize, newSize);
    if (preserveLength > 0) {
        System.arraycopy(oldArray, 0, newArray, 0, preserveLength);
    }
    return newArray;
}

// 測試代碼
public static void main(String[] args) {
    int[] a = {1, 2, 3};
    a = (int[]) resizeArray(a, 5);
    a[3] = 4;
    a[4] = 5;
    for (int i = 0; i < a.length; i++) {
        System.out.println(a[i]);
    }
}

2. 二維數組轉 Map

使用 org.apache.commons.lang.ArrayUtils.toMap 快速轉換:

import java.util.Map;
import org.apache.commons.lang.ArrayUtils;

public class Main {
    public static void main(String[] args) {
        String[][] countries = {
            {"United States", "New York"},
            {"United Kingdom", "London"},
            {"Netherland", "Amsterdam"},
            {"Japan", "Tokyo"},
            {"France", "Paris"}
        };
        Map countryCapitals = ArrayUtils.toMap(countries);
        System.out.println("Capital of Japan is " + countryCapitals.get("Japan"));
        System.out.println("Capital of France is " + countryCapitals.get("France"));
    }
}

注意事項

  • resizeArray 返回 Object,調用處需強制轉型。
  • ArrayUtils.toMap 要求二維數組每個子數組長度至少為 2,第一個元素作為 Key,第二個作為 Value。
  • 生產環境中頻繁擴容建議直接使用 ArrayList 或 Vector。

總結

本文提供的兩個代碼片段解決了 Java 數組固定長度與數組轉集合的常見需求,代碼簡潔且可直接應用於項目中。

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