Java 如何将类的实例添加到二维ArrayList

Java 如何将类的实例添加到二维ArrayList,java,arraylist,Java,Arraylist,我有一个问题,我需要创建一个特定大小的网格,可以由用户定义,否则它默认为7。网格上的每个单元格本身都可以包含项,因此在某种程度上这是一个3D ArrayList。我决定创建一个网格类,它是一个2D ArrayList,然后有一个单独的类,叫做Cell,它只是一个ArrayList。因此,我们的目标是拥有一个大小为nxn的2D ArrayList,它将拥有n^2个Cell类实例。但是,我在遍历我创建的ArrayList时遇到了问题,我开始认为我从一开始就把2D ArrayList弄错了。本质上,我

我有一个问题,我需要创建一个特定大小的网格,可以由用户定义,否则它默认为7。网格上的每个单元格本身都可以包含项,因此在某种程度上这是一个3D ArrayList。我决定创建一个网格类,它是一个2D ArrayList,然后有一个单独的类,叫做Cell,它只是一个ArrayList。因此,我们的目标是拥有一个大小为nxn的2D ArrayList,它将拥有n^2个Cell类实例。但是,我在遍历我创建的ArrayList时遇到了问题,我开始认为我从一开始就把2D ArrayList弄错了。本质上,我试图获得帮助的是如何实例化2D ArrayList并用Cell的所有实例填充它

import java.util.ArrayList;

class Cell {
    private ArrayList contents = new ArrayList();
}

class Grid {

    public ArrayList<ArrayList> grid = new ArrayList<ArrayList>();

    public Grid () {
        for (Object array : this.grid){
            ArrayList new_array = (ArrayList) array;
            for (int i=0; i<7;i++){
                this.grid.add(new Cell());
            }
        }
    }

    public Grid (int size) {
        for (Object array : this.grid){
            ArrayList new_array = (ArrayList) array;
            for(int i=0; i < size; i++){
                this.grid.add(new Cell());
            }
        }
    }

}
import java.util.ArrayList;
类单元{
private ArrayList contents=new ArrayList();
}
类网格{
public ArrayList grid=new ArrayList();
公共电网(){
for(对象数组:this.grid){
ArrayList新数组=(ArrayList)数组;

对于(inti=0;i我认为您没有初始化网格。 如果要生成二维网格,应在向行添加项目之前生成行,并应指定内部arraylist的类型

class Cell {
    private ArrayList contents = new ArrayList();
}

class Grid {
    public ArrayList<ArrayList<Cell>> grid = new ArrayList<ArrayList<Cell>>();

    //Generate 7 by 7 grid
    public Grid() {
        for (int i = 0; i < 7; i++) {
            ArrayList<Cell> innerList = new ArrayList<Cell>();
            for (int j = 0; j < 7; j++) {
                innerList.add(new Cell());
            }
            grid.add(innerList);
        }
    }

    //Generate size by size grid
    public Grid(int size) {
        for (int i = 0; i < size; i++) {
            ArrayList<Cell> innerList = new ArrayList<Cell>();
            for (int j = 0; j < size; j++) {
                innerList.add(new Cell());
            }
            grid.add(innerList);
        }
    }

}
类单元{
private ArrayList contents=new ArrayList();
}
类网格{
public ArrayList grid=new ArrayList();
//生成7乘7的网格
公共电网(){
对于(int i=0;i<7;i++){
ArrayList innerList=新的ArrayList();
对于(int j=0;j<7;j++){
添加(新单元格());
}
grid.add(innerList);
}
}
//按大小网格生成大小
公共网格(整数大小){
对于(int i=0;i