如何动态初始化2d对象数组

时间:2012-10-15 10:22:30

标签: java arrays object initialization

尝试实现动态初始化2D对象数组的方法时,我有点困惑。

我知道用hashmap做双括号初始化但是在这种情况下我不想这样做,我想学习如何手动完成它。我知道必须有办法。

所以这是我到目前为止所做的,但不正确:

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

如您所见,我错过了第一个维度的值的分配,它应该代表行(0,1,2,3 ...)。

你能帮我找到如何完成这个初始化吗? 在return语句之前创建对象不是一个选项,我想在旅途中一起做,一起作为单个return语句。

3 个答案:

答案 0 :(得分:3)

这样的事情:

    return new Object[][] {new Object[]{}, new Object[]{}};

答案 1 :(得分: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]]

答案 2 :(得分: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);
    }
}