繁体   English   中英

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

[英]How to initialize dynamically a 2d object array

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

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

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

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

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

您能帮我找出如何完成此初始化吗? 在return语句之前创建对象不是一种选择,我想随时随地将其作为单个return语句一起执行。

像这样:

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

您的代码正确,但仅适用于第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]]

手动:

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);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM