java - 在 Java 中快速存储和检索点(相关 x 和 y)。列表与数组

标签 java optimization linked-list 2d hashmap

我正在尝试用 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/

相关文章:

java - Google App Engine session 丢失属性

Java EventHander 限制(时间)

c - c链表中head不断变化

c# - 按位相等

c# - 编译器是否优化了字符串文字?

java - 修改HashMap中LinkedList的值

c++ - 链表C++实现

java - Android Studio - 如何从 ListView 打开特定 Activity ?

java - 如何防止 Jar 文件在 macOS 上转换为 zip”?

objective-c - 制作结构与对象所需的计算量