1 回答
![?](http://img1.sycdn.imooc.com/545863dc00011d2202200220-100-100.jpg)
TA贡献1772条经验 获得超6个赞
要深度复制多维数组,请使用以下代码。
请注意,这只是数组值的深度副本,而不是数组中任何非数组值的副本,因此副本仅对于多维原始数组才是真正的深度副本。对于多维对象数组,它是深浅的。
数组的声明类型无关紧要。例如, anObject[][]可以包含数组对象,使其(部分)成为 3D 数组。那些第三维数组也被复制。
该方法将复制一维对象数组,但不会复制一维原始数组。要复制一维原始数组,请使用clone().
@SuppressWarnings("unchecked")
public static <T> T[] deepCopyArray(T[] array) {
return (T[]) deepCopyArrayInternal(array);
}
private static Object deepCopyArrayInternal(Object array) {
int length = Array.getLength(array);
Object copy = Array.newInstance(array.getClass().getComponentType(), length);
for (int i = 0; i < length; i++) {
Object value = Array.get(array, i);
if (value != null && value.getClass().isArray())
value = deepCopyArrayInternal(value);
Array.set(copy, i, value);
}
return copy;
}
添加回答
举报