-1

我正在编写一个搜索算法来解决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;     
} 

所以我的问题是,在我克隆状态然后改变它之后,它也会影响以前的状态和所有其他克隆。我的第一个想法是我没有正确创建二维数组的深层副本,但我找不到上面的代码有什么问题。

有什么建议么?谢谢

4

1 回答 1

5

你是对的。您需要通过手动clone()ing 数组中的每个元素来进行深层复制。

于 2012-05-11T21:30:30.587 回答