【发布时间】:2019-08-18 16:36:26
【问题描述】:
我正在尝试创建一个多维数组的副本,这样对新数组的任何修改都不会影响原始数组。
这是我的代码:
public static int[][] getNextGenUniverse(int[][] validUniverse) {
// Create a copy of the original array
int[][] nextUniverse = new validUniverse[][];
// Iterate through all the elements of the array
for (int i = 0; i < nextUniverse.length; i++) {
// Iterate through all the elements of the subarrays
for (int j = 0; j < nextUniverse[i].length; j++) {
nextUniverse[i][j] = validUniverse[i][j];
}
}
}
我在声明新数组的长度时遇到了问题。有人可以帮帮我吗?
【问题讨论】:
-
“对新数组的任何修改都不会影响原始数组”是什么意思?您是指浅拷贝,其中更改新数组的内容不会更改另一个数组的内容,还是您的意思是深拷贝,其中修改对象 inside 新数组不会修改对象 在旧数组里面?
-
@Mike'Pomax'Kamermans 我的意思是改变新数组的一个元素不会改变原数组的对应元素。
-
那里仍然存在一些歧义,因为“更改元素”通常意味着执行类似
arr[i].setValue()之类的操作,这将更新该对象,而不管它在什么位置。所以做到了您的意思是浅拷贝,其中数组不同,但它们指向相同的对象,或者您的意思是深拷贝,其中 所有涉及的数据 被复制,并且在复制后立即已经存在两个数组指向的任何数据之间没有关系? (例如“您只想要图书馆的索引书的副本,还是想要复制整个图书馆,包括所有书籍”)
标签: java multidimensional-array