我有一个问题,我需要创建一个可以由用户定义的特定大小的网格,否则默认为7。网格上的每个单元格本身都可以包含项目,因此以某种方式它是3D ArrayList。我决定要做的是创建一个Grid类,它将是一个2D ArrayList,然后有一个名为Cell的单独的类,它只是一个ArrayList。因此,目标是拥有大小为nxn的2D ArrayList,该数组将具有Cell类的n ^ 2个实例。但是,我在遍历创建的ArrayList时遇到了麻烦,并且开始认为我一开始就将2D ArrayList弄错了。本质上,我试图获得帮助的是如何实例化和填充Cell的所有实例的2D ArrayList。
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());
}
}
}
}
答案 0 :(得分:0)
我认为您没有初始化网格。 如果要制作2D网格,则应先制作行,然后再向行添加项目,并应指定内部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);
}
}
}