2016-11-07 162 views
-1

尺寸的ArrayList比方說,我想創造一個ArrayList類似如下:兩種不同類型的

[ 
    [500000, 999999, 900000, "D\u0305", "C\u0305M\u0305"] 
    [100000, 499999, 400000, "C\u0305", "C\u0305D\u0305"] 
    [50000, 99999, 90000, "L\u0305", "X\u0305C\u0305"] 
    [10000, 49999, 40000, "X\u0305", "X\u0305L\u0305"] 
    [5000, 9999, 9000, "V\u0305", "MX\u0305"] 
    [1000, 4999, 4000, "M", "MV\u0305"] 
    [500, 999, 900, "D", "CM"] 
    [100, 499, 400, "C", "CD"] 
    [50, 99, 90, "L", "XC"] 
    [10, 49, 40, "X", "XL"] 
] 

有誰知道實現這樣的事情與Java的最佳途徑?

+1

創建一個包含數組字段的類。然後你的2D數組變成'Array '。 –

+0

要將數字和字符串作爲可能的元素,您必須將元素定義爲「Object」。 – Henry

+0

對不起,我搜索了5種不同的方式和第五種搜索方式我發現它 - http://stackoverflow.com/questions/15099463/two-dimensional-array-with-different-types –

回答

1

稍微不清楚你在問什麼。在Java中,我們實際上並沒有2D數組。相反,我們有數組的數組。同樣,只有1D ArrayList可以包含不同的ArrayList s。

另一件事是存儲的類型。我會建議寫你自己的班級,它會存儲羅馬或阿拉伯數字。

public class RomanOrArabic { 
    private Long arabic; 
    private String roman; 

    public boolean isArabic(){ 
     return arabic != null; 
    } 
    //add getters, smart setters, validators for String being Roman etc. 
} 

然後宣佈你ArrayList

ArrayList<ArrayList<RomanOrArabic>> list = new ArrayList<>(); 
0

我看到有一些混亂,所以我想我會在這裏發佈的解決方案。

// The solution 
    Object RomanNumeralValues[][] = { 
      {500000, 999999, 900000, "D\u0305", "C\u0305M\u0305"}, 
      {100000, 499999, 400000, "C\u0305", "C\u0305D\u0305"}, 
      {50000, 99999, 90000, "L\u0305", "X\u0305C\u0305"}, 
      {10000, 49999, 40000, "X\u0305", "X\u0305L\u0305"}, 
      {5000, 9999, 9000, "V\u0305", "MX\u0305"}, 
      {1000, 4999, 4000, "M", "MV\u0305"}, 
      {500, 999, 900, "D", "CM"}, 
      {100, 499, 400, "C", "CD"}, 
      {50, 99, 90, "L", "XC"}, 
      {10, 49, 40, "X", "XL"} 
    }; 

    // Where the solution gets used 
    String romanNumeral = ""; 
    for (Object rmRange[]: RomanNumeralValues) { 
     romanNumeral += extractRomanNumeralsBelowOneMillion(
       (int)rmRange[0], 
       (int)rmRange[1], 
       (int)rmRange[2], 
       rmRange[3].toString(), 
       rmRange[4].toString() 
     ); 
    } 

我不舒服的類型轉換剛拉出來的值對象數組的,但我想它的工作原理。如果任何人有更好的解決方案,我會留下這個問題。

+0

這是一個糟糕的理念。當你可以使用自己的類時,爲什麼要使用轉換並捕獲'CastException'。看看我的答案。 – xenteros