我目前正在开发一种名为“Jump Point Search。”的寻路算法。
要检查节点,我创建了一个节点的2D节点数组,其节点为“Node”(tempWorld
)。当我尝试找到路径时,我用“.clone()”填充另一个全局2D节点数组(tempWorld
),以确保landSeaData
不是tempWorld = landSeaData.clone();
的指针:
System.out.println(tempWorld[1][0] +" , "+ landSeaData[1][0]);
Output:
JPS.Node@4cc77c2e , JPS.Node@4cc77c2e
此克隆方法返回一个新的2D节点数组,但索引仍然是克隆数组的指针。我查了一下是用println:
tempWorld = new Node[landSeaData.length][landSeaData[0].length];
for(int x = 0; x < landSeaData.length; x++) {
for(int y = 0; y < landSeaData[0].length; y++) {
if(landSeaData[x][y] != null) {
tempWorld[x][y] = new Node(landSeaData[x][y].position);
}
}
}
如何防止这种情况或者我是否必须以其他方式复制它,以确保索引不是彼此的指针?
修改
我为2D数组创建了一个深度复印机,但需要很长时间,47毫秒:
{{1}}
有更快的深度复制方法吗?