2

オブジェクトの2D配列を動的に初期化するメソッドを実装しようとすると少し行き詰まります。

ハッシュマップを使用して二重中括弧の初期化を行うことは知っていますが、この場合はそのようにしたくないので、手動で行う方法を学びたいと思います。私は方法がなければならないことを知っています。

だからこれは私がこれまでに持っているものですが、正しくありません:

return new Object[][] {
                          {
                              buildNewItem(someValue),
                              buildNewItem(someValue),
                              buildNewItem(someValue),
                              buildNewItem(someValue),
                              buildNewItem(someValue),
                           }    
};

ご覧のとおり、rows(0,1,2,3 ...)を表す最初のディメンションの値の割り当てがありません。

この初期化を完了する方法を教えていただけますか?returnステートメントの前にオブジェクトを作成することはオプションではありません。外出先で、すべてを1つのreturnステートメントとして作成したいと思います。

4

3 に答える 3

3

このようなもの:

    return new Object[][] {new Object[]{}, new Object[]{}};
于 2012-10-15T10:29:54.383 に答える
2

コードは正しいですが、行0のみです。次を使用して行を追加できます。{}

static int count = 0;
public static Integer buildNewItem() {
    return count++;
}
public static void main(String[] args) {

    System.out.println(Arrays.deepToString(new Object[][]{
            {buildNewItem(), buildNewItem(), buildNewItem()},
            {buildNewItem(), buildNewItem(), buildNewItem()} <--Use {} to separate rows
                           }));

}

出力:

[[0, 1, 2], [3, 4, 5]]
于 2012-10-15T10:40:51.967 に答える
0

手動:

Object[][] obj = new Object[ROWS][COLS];
for(int i = 0 ; i < ROWS ; i++) {
    for(int j = 0 ; i < COLS; j++) {
        obj[i][j] = buildNewItem(someValue);
    }
}
于 2012-10-15T10:29:42.637 に答える