【发布时间】:2016-07-28 13:31:41
【问题描述】:
我正在尝试从 LinkedHashMap 创建一个大型二维数组 int[][],其中包含许多较小的数组,用于我正在研究的 A* Pathfinder。
Pathfinder 使用的Map 以较小的块流式传输到客户端,并转换为 Pathfinder 的简化版本。
Map<Coord, int[][]> pfmapcache = new LinkedHashMap<Coord, int[][]>(9, 0.75f, true);
坐标看起来像这样:Coord(0,0) 或 Coord(-1,0).... 等等,int[][] 总是 int[100][100] 大。
现在我想创建一个新的大 int[][],它将包含所有较小的数组,其中小数组 Coord(0,0) 将位于新的大数组的中心。
int[][] largearray = [-1,1][0,1][1,1]
[-1,0][0,0][1,0]
[-1,-1][0,-1][1,-1]
所以在这个例子中大数组是int[300][300] big。
2.如果pfmapcache添加了新的小数组,我想扩展新的大数组。
int[][] largearray = [][][1,2]
[-1,1][0,1][1,1]
[-1,0][0,0][1,0]
[-1,-1][0,-1][1,-1]
我不必在pfmapcache 中存储较小的数组想法如何组合它们并保持它们的相对位置。
第一次在这里发帖,如果我需要澄清一些事情请告诉我。
【问题讨论】:
-
提示:阅读 Java 编码风格指南。您使用混合大小写作为变量名。而且您了解始终创建新数组和复制值的成本吗?以其他方式:您是否考虑过从“低级”二维数组中“抽象”;这样也许你的算法可以处理它的数据......而不用把所有东西都放在一个大数组中?
-
@GhostCat 我相信 Java 变量命名约定的正确名称是“camelcase”。 :)
-
@Jokab camelCase 会是这样,不是吗 ;-)
-
是的,我曾考虑在我的探路者中使用“低级”二维数组,但这需要我重写探路者的重要部分。我最终将不得不重写它,但我正在寻找一个临时解决方案来让它同时工作。
标签: java arrays path-finding