具有状态的ArrayList元素

时间:2015-10-05 10:36:43

标签: java arraylist collections

假设我有ArrayList个对象 - 例如,屏幕上的精灵。

我遍历这些对象以计算他们接下来要做什么,但为了做到这一点,我必须保持他们之前的状态(例如,为了知道对象A应该被移动到是的,我必须知道以前我们已经把它移到了右边。)

可以随时向ArrayList添加或删除对象。

鉴于此对象没有一种方法来跟踪这一点,保持状态的最佳方法是什么?

4 个答案:

答案 0 :(得分:2)

如果可以的话,最好的选择是将精灵类扩展为一个跟踪前一个位置的子类。是否可以执行此操作取决于ArrayList来自何处:您可能控制或不控制实例的构建。

如果你不能,我会建议你使用这些对象中的HashMap来存储你需要跟踪的状态(例如,之前的位置)。

更新后,您可以遍历ArrayList,并在地图中查找每个对象以查找它曾经的位置。然后,您需要更新其在屏幕上的位置,并将之前位置的地图缓存更新为新位置。

另一种选择是创建一个包装对象,该对象包含一个sprite,并且还包含它之前的位置,然后将这些包装器对象存储在ArrayList中。

答案 1 :(得分:0)

扩展对象并实现状态跟踪机制,然后使ArrayList获取这种新类型的对象。

答案 2 :(得分:0)

尝试使用LinkedList而不是ArrayList,以便跟踪前一个对象的状态。

答案 3 :(得分:-2)

这取决于你的逻辑,在真正意义上,没有最好的方法来保持以前的状态。但我在Object类中有一个static变量来跟踪最后完成的事情的状态。因为static变量或函数属于该类而不是对象的实例,因此它可用于跟踪影响该类的所有内容