【问题标题】:ArrayList or Stack of arrays in AndroidAndroid中的ArrayList或数组堆栈
【发布时间】:2016-09-08 23:39:47
【问题描述】:

我有一个二维数组,其中包含一个类,每个单元格都包含信息;即

class gridCell {
    int value;
    Boolean valid;
    int anotherValue;
}

gridCell[][] grid=new gridCell[50][50];

这很好用,一旦初始化,我可以使用访问数组

grid[10][10].value=42;

我的问题是我想创建一个堆栈或数组列表来存储不同时间的网格数组状态。当我尝试通过

创建一个数组列表时
ArrayList<grid> gridList=new ArrayList<grid>();

我得到网格不是一个类的错误。如果我尝试在堆栈中使用它,同样的交易

Stack<grid> gridStack = new Stack<grid>();

那么如何声明网格以便将其添加到堆栈或数组列表中?

任何帮助表示赞赏。

【问题讨论】:

  • 你的班级被命名为gridCell 而不是grid 对吧?

标签: java android arrays arraylist stack


【解决方案1】:

您需要将 ArrayList 类型声明为您要保存的确切类型。既然要保存网格数组,只需要传递数组类型即可:

ArrayList<gridCell[][]> gridList = new ArrayList<gridCell[][]>();

您似乎对类型和变量有点困惑。在你的声明中

gridCell[][] grid = new gridCell[50][50];,

您正在声明一个变量 grid 类型 gridCell[][]

【讨论】:

  • 是的,没错。我确实打算让 grid 成为一个变量(数组),其中包含 gridcell 项。
  • 该声明运行良好。如何将当前网格数组添加到列表中?使用 gridList.add(grid) 似乎无法正确复制当前网格数组。
  • 那是因为数组是reference types。如果要存储网格数组的连续增量,则需要在添加之前自己创建一个副本。 System.arraycopy() 应该可以帮到你。
  • 再想一想,您使用的是二维数组,所以this question 可能更适合您。 System.arraycopy() 真的是为一维数组设计的。
  • 好的,arraycopy 让它工作了。感谢您提供正确方向的指示。
猜你喜欢
  • 1970-01-01
  • 2015-04-03
  • 1970-01-01
  • 2018-03-21
  • 1970-01-01
  • 2014-04-16
  • 2019-08-05
  • 2012-10-04
  • 2023-03-17
相关资源
最近更新 更多