我正在编写一个搜索算法来解决java中的15个难题。当我克隆拼图状态以生成新的可能动作(女儿)时,它们仍然相互改变而不是分开。
这是我的克隆方法:
public FifteenPuzzleState clone() throws CloneNotSupportedException
{
FifteenPuzzleState copy = (FifteenPuzzleState)super.clone();
for(int i=0; i<copy.currentConfig.length; i++){
copy.currentConfig[i] = Arrays.copyOf(currentConfig[i], currentConfig[i].length);
}
return copy;
}
所以我的问题是,在我克隆状态然后改变它之后,它也会影响以前的状态和所有其他克隆。我的第一个想法是我没有正确创建二维数组的深层副本,但我找不到上面的代码有什么问题。
有什么建议么?谢谢