Java - 数组的克隆方法仍然提供指针

时间:2015-12-09 14:41:52

标签: java arrays pointers

我目前正在开发一种名为“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}}

有更快的深度复制方法吗?

0 个答案:

没有答案