0

我正在制作一个游戏,我必须将一些精灵数据(例如位置、图像等)存储在一个集合中。问题是我应该使用哪个系列?

我,我的主要问题是碰撞检测:

1,我第一次使用一个简单的ArrayList,但是当我必须检查实际的精灵是否与其他精灵发生碰撞时,我必须遍历所有其他精灵以找出它。我觉得有点太费劲了。

2,第二次我认为 ConcurrentHashMap 可能是理想的。因此,当我尝试将精灵移动到其他位置时,我可以检测它是否是保留位置。

二、然后是另一个问题:

1,当我更新 ArrayList 时,我可以遍历所有精灵并覆盖旧位置。

2,但是当我更新 ConcurrentHashMap 时,我必须从地图中删除实际条目并放置一个新条目而不是它(我不能只更改键,因为值不会跟随它)。所以这里我们遇到了 remove 和 put 的性能问题。

提前致谢。

4

1 回答 1

1

对我来说,将您的碰撞基于集合类型似乎很不寻常,除非该集合是一个 2D/3D 网格,每个位置有一个对象,表示为一个数组。如果是,您可以在 O(1) 中检查该数组上的精确点。

如果您以像素或矢量精确地进行碰撞,您可能必须进行迭代。

在这种情况下,我会使用某种 LinkedList,因为你可能会在碰撞时删除东西。

于 2013-10-23T19:25:26.700 回答