2

我在尝试实现一种动态初始化二维对象数组的方法时有点卡住了。

我知道使用哈希图进行双括号初始化,但在这种情况下,我不想这样做,我想学习如何手动进行。我知道必须有办法。

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

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

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

你能帮我找出如何完成这个初始化吗?在 return 语句之前创建对象不是一种选择,我想在旅途中进行,所有这些都作为一个 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 回答