【发布时间】:2011-10-20 06:17:19
【问题描述】:
我正在尝试用 Java 重新创建一个棋盘游戏,其中涉及我存储一组可以放置棋子的有效位置(用于 AI)。我认为,如果我有一个 X 坐标的数组/列表/字典,其中有一个 y 坐标的数组/列表,那么运行时间可能会更快,而不是存储为点列表,所以一旦你找到x 坐标你只需要检查它的 Ys 而不是所有剩余的点。
我遇到的麻烦是我必须经常更改有效点。我想出了一些可能的解决方案,但难以选择/实施它们:
-
HashMap ,其中 X 作为整数键,Ys 作为 ArrayList。
- 问题:每次添加 X 时,我都必须创建一个新的 ArrayList。
- 我也不确定 HashMap 的运行时性能。
-
int[X][Y] 数组初始化为棋盘大小,每个点设置为其相对位置(点 2,3 集[2][3])未设置点为无效整数。
- 问题:我必须遍历所有点并检查每个点。
-
点列表 这只是一个链接/数组点列表。
- 问题:列表比数组慢。
- 使用点的链接列表与检查整个数组相比如何?
也许我应该使用二维链表?最快的运行时方法是什么?
【问题讨论】:
-
您是否尝试过最简单的代码,但发现它的性能不够好?这块板有多大,你需要多久做一次这种事情?
标签: java optimization linked-list 2d hashmap