我有一个二维数组,称为int类型的矩阵,我想用一种方法将其复制到局部变量,以便我可以对其进行编辑
什么是复制阵列的最佳方法,我遇到了一些麻烦
例如
int [][] myInt;
for(int i = 0; i< matrix.length; i++){
for (int j = 0; j < matrix[i].length; j++){
myInt[i][j] = matrix[i][j];
}
}
//do some stuff here
return true;
}
有两种复制数组的好方法是使用clone和System.arraycopy()
。
这是在2D情况下如何使用克隆的方法:
int [][] myInt = new int[matrix.length][];
for(int i = 0; i < matrix.length; i++)
myInt[i] = matrix[i].clone();
对于System.arraycopy(),你可以使用:
int [][] myInt = new int[matrix.length][];
for(int i = 0; i < matrix.length; i++)
{
int[] aMatrix = matrix[i];
int aLength = aMatrix.length;
myInt[i] = new int[aLength];
System.arraycopy(aMatrix, 0, myInt[i], 0, aLength);
}
我没有基准,但是我可以用我的2美分打赌,它们比你自己做的更快,更不容易出错。特别是,System.arraycopy()
它是用本机代码实现的。
希望这可以帮助。
问题内容: 我只是在数组上使用过,以为这是一个深复制。 如何执行阵列的深层复制? 我应该遍历它并执行一系列的操作吗? 问题答案: 是的,你应该遍历2D布尔数组以进行深复制。如果你使用的是Java 6,请同时查看方法。 我建议使用Java 6的下一个代码:
所以,我有两个多维数组。 数组值示例: 这就是我想要的 我想从组合中获得所有唯一的数组,并用它填充唯一的组合。 我尝试了这个函数,但它只填充了5个数组,真奇怪!
如何将2d数组复制到新的更大的数组中,以便在新数组中添加更多项目,同时仍然具有原始数据?我的代码使越界失败 - 我的错误是什么?我试图说复制数组应该是原始数组.length x - 但不起作用。 导入Java . util . scanner;//将扫描仪导入程序 公共类TestTest{ }
问题内容: 我试图制作一个数组的独立副本,但无法获得一个。出于效率原因,我无法使用for循环将其逐个整数复制。还有其他办法吗?这是我的代码: 问题答案: 看方法。喜欢,
以下代码是康威在终端中的生活游戏。我想在这里做的是将当前步骤覆盖到下一步。我有一个临时的2D数组在动画()方法。同样在主方法中,我打印了三次动画变化(),这就是我想要改变的。基本上,我想覆盖董事会,而不是打印三次,因为视觉上它相当丑陋,而循环。
问题内容: 我有一个a不断更新的数组。比方说。我需要制作一个完全相同的副本a并称之为b。如果a要改成,b应该还是。做这个的最好方式是什么?我尝试了像这样的循环: 但这似乎无法正常工作。请不要使用深层复制等高级术语,因为我不知道这意味着什么。 问题答案: 你可以尝试使用System.arraycopy()