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

Java 方法需要返回多個數組的多種設計方案:二維數組、List、自定義封裝類

     編輯:程式設計疑難解答

方案對比

方案代碼示例優點缺點
二維數組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 或分頁迭代器避免內存壓力。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved