方案對比
| 方案 | 代碼示例 | 優點 | 缺點 |
| 二維數組 | int[][] get() { return new int[][]{{1,2},{3,4}}; } | 簡單、無額外依賴 | 長度固定、語義不明確 |
| List<int[]> | List get() { return Arrays.asList(arr1, arr2); } | 動態長度、類型安全 | 外層可變、內層數組仍共享 |
| Map<String,int[]> | Map get() { return Map.of("a",arr1,"b",arr2); } | 鍵值語義清晰 | Key 為字符串易寫錯 |
| 自定義 Result 類 | class Result { int[] a; int[] b; } | 強類型、可擴展字段、支持驗證 | 需定義額外類 |
推薦:自定義封裝類
public class MultiArrayResult {
private final int[] primary;
private final int[] secondary;
private final long timestamp;
public MultiArrayResult(int[] primary, int[] secondary) {
this.primary = primary.clone(); // 防禦性拷貝
this.secondary = secondary.clone();
this.timestamp = System.currentTimeMillis();
}
// getters...
}
// 使用
public MultiArrayResult compute() {
int[] a = {1,2,3};
int[] b = {4,5,6};
return new MultiArrayResult(a, b);
}
其他技巧
- Java 14+ Record:
public record MultiArrayResult(int[] primary, int[] secondary) {} 自動生成構造器/Getter/equals/hashCode/toString。
- 返回
Pair(Apache Commons Lang / JavaFX / 手寫)。
- 若數組極大,考慮返回
InputStream 或分頁迭代器避免內存壓力。