我目前正在开发自己的应用程序(只是着名的“生命游戏”的另一部重拍),我想添加一个“恢复”按钮。我的游戏基本上由一个二维数组组成:Cell [] [] ...... 所以:我的想法是创建一个ArrayList,该数组被添加到每个更新...(限制为50个条目) 但后来我想,那个列表中会有很多对象......所以:
在二维数组中的每个单元格中包含ArrayList,包含其自身的历史,或者将包含整个游戏状态的巨大ArrayList作为历史记录会更高效吗?
(我认为你不需要我的任何代码来回答这个问题,但如果你这样做我会发布它)
答案 0 :(得分:0)
在我看来,每个单元格ArrayList
可以正常工作;但是,如果您只想存储50个州,则必须创建自定义ADT或使用Guava的Collections API。
我建议使用Stack
而不是ArrayList
,因为恢复每个单元格将是一个简单的操作。在Java中,要使用的正确ADT是ArrayDeque
,但您必须自己处理容量。
答案 1 :(得分:0)
为什么不保留转换单元状态的事件,而不是存储单元状态?事件将简单地封装先前的状态信息和下一个状态,或者甚至可以封装可以反向执行的编码枚举。这将显着减少您需要存储的数据。
此外,如果您是在本地工作,或者在垃圾收集VM平台(如Java或C#)上,它会有所不同。前者往往更快,并且在大型寻址存储方面更宽容,而后者如果存储大量对象则会开始疯狂。
但布丁的真实证据在于吃/吃:没有最快的代码(c)Michael Abrash - >即基准你的代码并找出答案! (并告诉我们)