我正在尝试用 Java 重新创建一个棋盘游戏,其中涉及我存储一组可以放置棋子的有效位置(对于 AI)。我认为,如果我有一个 X 坐标的数组/列表/字典,其中有一个 y 坐标的数组/列表,那么运行时可能会更快,而不是存储为点列表,所以一旦你发现x 坐标,您只需检查它的 Y,而不是所有剩余的点。
我遇到的麻烦是我必须经常更改有效点。我想出了一些可能的解决方案,但很难选择/实现它们:
- HashMap < Integer, ArrayList >,其中 X 作为整数键,Y 作为 ArrayList。
- 问题:每次添加 X 时,我都必须创建一个新的 ArrayList。
- 我也不确定 HashMap 的运行时性能。
- int[X][Y] 数组初始化为棋盘尺寸,每个点设置为其相对位置(点 2,3 集[2][3])未设置的点是无效整数。
- 问题:我必须遍历所有点并检查每个点。
- 点列表这只是一个点的链接/数组列表。
- 问题:列表比数组慢。
- 使用点链接列表与像上面这样检查整个数组相比如何?
也许我应该使用二维链表?最快的运行时方法是什么?
最佳答案
你担心的是错误的事情。访问集合/ map /数组项目非常快。图形部分将对性能更加敏感。只需使用最自然的数据结构即可。无论如何,你不太可能存储足够的真正重要的元素。首先构建它,然后找出性能问题真正出在哪里。
关于java - 在 Java 中快速存储和检索点(相关 x 和 y)。列表与数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7831851/