尝试实现动态初始化2D对象数组的方法时,我有点困惑。
我知道用hashmap做双括号初始化但是在这种情况下我不想这样做,我想学习如何手动完成它。我知道必须有办法。
所以这是我到目前为止所做的,但不正确:
return new Object[][] {
{
buildNewItem(someValue),
buildNewItem(someValue),
buildNewItem(someValue),
buildNewItem(someValue),
buildNewItem(someValue),
}
};
如您所见,我错过了第一个维度的值的分配,它应该代表行(0,1,2,3 ...)。
你能帮我找到如何完成这个初始化吗? 在return语句之前创建对象不是一个选项,我想在旅途中一起做,一起作为单个return语句。
答案 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);
}
}