定义多维arraylist的容量

时间:2017-05-25 13:20:18

标签: java arraylist multidimensional-array

我创建了一个名为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);

但这会产生错误。有谁知道如何解决这个问题,我真的很感激!提前谢谢!

3 个答案:

答案 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,并且内容将被复制。

您需要查看每个维度并创建具有可选初始容量集的新列表。