Java 如何动态初始化二维对象数组

Java 如何动态初始化二维对象数组,java,arrays,object,initialization,Java,Arrays,Object,Initialization,我在尝试实现一个动态初始化2D对象数组的方法时遇到了一些困难 我知道用hashmap进行双括号初始化,但在本例中我不想这样做,我想学习如何手动进行。我知道一定有办法 这就是我到目前为止所知道的,但并不正确: return new Object[][] { { buildNewItem(someValue), buildNewI

我在尝试实现一个动态初始化2D对象数组的方法时遇到了一些困难

我知道用hashmap进行双括号初始化,但在本例中我不想这样做,我想学习如何手动进行。我知道一定有办法

这就是我到目前为止所知道的,但并不正确:

return new Object[][] {
                          {
                              buildNewItem(someValue),
                              buildNewItem(someValue),
                              buildNewItem(someValue),
                              buildNewItem(someValue),
                              buildNewItem(someValue),
                           }    
};
如您所见,我缺少第一个维度的值的赋值,它应该表示行(0,1,2,3…)

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

手动:

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);
    }
}
Object[][]obj=新对象[行][COLS];
对于(int i=0;i
类似这样的内容:

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

}

这不是动态的,因为您指定了行和列。@sfrj是的,我需要先初始化。无论如何,声明一个对象然后初始化它并不困难。我理解你的观点,但你的解决方案不适用于当前场景,因为你的索引是固定的。如果数组已满,您想输入更多数据,则必须增加索引。@sfrj数组总是有固定的维度。这与它的初始化方式无关。如果您想要动态大小的数组,您需要ArrayList或其他类型的集合。我知道。但尽管如此,还是有一种称为数组动态初始化的技术。这意味着这些索引是固定的,但您不需要指定索引的长度,因为它们将根据初始化时传递的对象数进行定义。你举的例子不正确。
[[0, 1, 2], [3, 4, 5]]