我试图在Java中重新创建一个棋盘游戏,这涉及到我存储一组有效的地方碎片可以放置(为AI)。我想也许不是存储为点的列表,如果我有一个数组/列表/字典的X坐标,其中有一个数组/列表的y坐标,它会运行得更快,所以一旦你找到X坐标,你只需要检查它的y,而不是所有剩下的点。
我的问题是我必须经常更改有效点。我想出了一些可能的解决方案,但很难选择/实施它们:
-
HashMap & lt;整型,ArrayList>,其中X作为整型键,y作为ArrayList。
- 问题:我必须创建一个新的数组列表,每次我添加一个x
- 我也不确定HashMap的运行时性能。
-
int[X][Y] array初始化为板大小,每个点设置为其相对位置(点2,3 set[2][3]),未设置点为无效整数。
- 问题:我必须遍历所有点并检查每个点。
-
点列表这将是一个点的链接/数组列表。
- 问题:列表比数组慢。
- 如何使用点的链表比较检查像上面的整个数组?
也许我应该使用2d链表?最快的运行时方法是什么?
你担心错了。访问集合/映射/数组项非常快。图形部分将对性能更加敏感。只要使用最自然的数据结构。无论如何,你不太可能储存足够多的物品。首先构建它,然后找出真正的性能问题在哪里。
如果你使用点的数组列表,你有几乎相同的性能与数组(在Java中)
我认为这是最快的解决方案,因为正如你已经提到的你必须遍历整个int-array和HashMap并且依赖的数组列表必须根据更改/添加坐标而更改