我正在制作游戏,我必须在集合中存储一些精灵数据(例如位置,图像等)。问题是我应该使用哪个集合?性能:ArrayList或ConcurrentHashMap
我,我的主要问题是碰撞检测:
1,我用了一个简单的ArrayList的第一次,但是当我要检查实际的精灵是否与其他精灵碰撞我不得不遍历所有其他精灵找出它。我认为它有点过于努力。
2,第二次我想也许ConcurrentHashMap会是理想选择。所以当我尝试将精灵移动到其他地方时,我可以检测它是否是保留位置。当我更新的ArrayList我可以遍历所有的精灵和覆盖旧的位置
1:
II,然后是其他的问题。
2,但是当我更新ConcurrentHashMap时,我必须从地图中删除实际的条目,并放置一个新的而不是它(我不能只是改变键,导致该值不会跟着它) 。所以在这里我们得到了移除和放置的性能问题。
在此先感谢。
您可能想要制作一个特殊集合,以便随着时间的推移对背景中的元素进行排序。根据它们的x值或其他值对它们进行排序。然后,当您检查碰撞时,您只能检查列表的一部分。只是一个想法虽然:) – Cruncher
@Cruncher可能是某种树?当它变成二维时变得越来越难,但是如果图形实施得不好,某种树或连接图可以看到它们的邻居可以减少搜索时间或使其变得无限。 – Magus
@AlexBeisley这当然是一个棘手的实现。但是,如果你需要在某个角落切角,肯定会有所帮助。我也担心,如果在后台切换渲染过程,背景中的排序不会给您提供太多的性能帮助。 – Cruncher