我创建了一个名为Grid
的类,并且我正在使用嵌套来定义嵌套ArrayList
的容量。这就是我目前所拥有的:
public class Grid extends GameObject {
private int cols;
private int rows;
private int colWidth;
private int rowHeight;
private ArrayList<ArrayList<GameObject>> contents;
public Grid(int x, int y, int cols, int rows, int colWidth, int rowHeight, ID id) {
super();
this.x = x;
this.y = y;
this.cols = cols;
this.rows = rows;
this.colWidth = colWidth;
this.rowHeight = rowHeight;
//Here I want to define the contents
this.width = colWidth * cols;
this.height = rowHeight * rows;
this.id = id;
}
}
代码看起来像这样:
this.contents = new ArrayList<ArrayList<GameObject>(cols)>(rows);
但这会产生错误。有谁知道如何解决这个问题,我真的很感激!提前谢谢!
答案 0 :(得分:0)
创建列表时定义大小。
contents = new ArrayList<>(x);
contents.add(new ArraysList<GameObject>(y));
答案 1 :(得分:0)
您无法使用单个初始化语句执行此操作。你需要一个循环。
this.contents = new ArrayList<ArrayList<GameObject>>(rows); // this creates an empty
// ArrayList
for (int i = 0; i < rows; i++) { // this populates the ArrayList with rows empty ArrayLists
this.contents.add(new ArrayList<GameObject>(cols));
// and possibly add another loop to populate the inner array lists
}
答案 2 :(得分:0)
从应用程序的角度来看,你根本无法做到这一点,它是单维列表。此外,new ArrayList<?>(N)
未定义列表的最大容量(如new GameObject[N]
会),但它定义了初始容量。将N个元素添加到该列表后,您仍然可以添加更多内容,因为内部将分配另一个数组,这次大于N,并且内容将被复制。
您需要查看每个维度并创建具有可选初始容量集的新列表。