如何在Java中做2d数组的深度复制?
2022-08-31 14:56:28
我只是通过在我的2d阵列上使用而得到一点,认为这是一个深度副本。.clone()
boolean
如何执行阵列的深层拷贝?boolean[][]
我应该循环浏览它并做一系列的'吗?System.arraycopy
我只是通过在我的2d阵列上使用而得到一点,认为这是一个深度副本。.clone()
boolean
如何执行阵列的深层拷贝?boolean[][]
我应该循环浏览它并做一系列的'吗?System.arraycopy
是的,您应该迭代 2D 布尔数组以对其进行深度复制。如果您使用的是Java 6,还可以查看方法。java.util.Arrays#copyOf
我建议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;
}
在Java 8中,这可以使用lambdas作为单行代码完成:
<T> T[][] deepCopy(T[][] matrix) {
return java.util.Arrays.stream(matrix).map(el -> el.clone()).toArray($ -> matrix.clone());
}