gpt4 book ai didi

java - 如何将类的实例添加到 2D ArrayList

转载 作者:行者123 更新时间:2023-12-01 23:48:30 24 4
gpt4 key购买 nike

我有一个问题,我需要创建一个可以由用户定义的特定大小的网格,否则默认为 7。网格上的每个单元格本身可以包含项目,因此在某种程度上,这是一个 3D ArrayList。我决定做的是创建一个 Grid 类,它是一个 2D ArrayList,然后有一个名为 Cell 的单独类,它只是一个 ArrayList。因此,目标是拥有一个大小为 nxn 的 2D ArrayList,其中包含 n^2 个 Cell 类实例。然而,我在迭代我制作的 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());
}
}
}

}

最佳答案

我认为您没有初始化网格。如果要制作二维网格,则应在将项目添加到行之前先制作行,并且应指定内部数组列表的类型。

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);
}
}

}

关于java - 如何将类的实例添加到 2D ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58228680/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com