一尘不染

如何在Java中对2d数组进行深层复制?

java

我只是.clone()2D boolean数组上使用过,以为这是一个深复制。

如何执行boolean[][]阵列的深层复制?

我应该遍历它并执行一系列System.arraycopy的操作吗?


阅读 334

收藏
2020-02-27

共1个答案

一尘不染

是的,你应该遍历2D布尔数组以进行深复制。java.util.Arrays#copyOf如果你使用的是Java 6,请同时查看方法。

我建议使用Java 6的下一个代码:

public static boolean[][] deepCopy(boolean[][] original) {
    if (original == null) {
        return null;
    }

    final boolean[][] result = new boolean[original.length][];
    for (int i = 0; i < original.length; i++) {
        result[i] = Arrays.copyOf(original[i], original[i].length);
        // For Java versions prior to Java 6 use the next:
        // System.arraycopy(original[i], 0, result[i], 0, original[i].length);
    }
    return result;
}
2020-02-27