我想知道将二维数组从临时数组复制到原始数组的正确方法是什么。 程序开头的数组大小未知,稍后将设置用户。 这是代码:
private static void copy_Matrix(int origin_Matrix [] [],int copy_Matrix [] [],int row,int 专栏)
{
for ( int i = 0 ; i < row-1; ++i) { for (int j = 0; j < column; j++) { origin_Matrix[i][j] = copy_Matrix[i][j]; } }
}
我知道这是错的,请帮忙......
答案 0 :(得分:3)
Java中不需要前缀增量。此外,您不需要在Java中传递行和列计数(只留下错误的空间)。并且,存在一个函数System.arraycopy,它应该至少与一次复制它们一样有效,如果不是更多的话。
private static void copy_Matrix(int origin_Matrix[][] , int copy_Matrix[][])
{
/* assert origin_Matrix.length == copy_Matrix.length */
for ( int i = 0 ; i < origin_Matrix.length; i++)
{
/* assert origin_Matrix[i].length == copy_Matrix[i].length */
System.arraycopy(origin_Matrix[i], 0, copy_Matrix[i], 0, origin_Matrix[i].length);
}
}
请注意,您应该了解Java集合(例如List / ArrayList或Vector)并有意识地确定在您的情况下需要一小部分int的轻微性能增益,而不是集合提供的额外可读性和便利性
答案 1 :(得分:2)
你最好用以下的东西结束:
private static int[][] copy_Matrix(int origin_Matrix[][])
{
int copy[][] = new int[origin_Matrix.length][origin_Matrix[0].length];
for ( int i = 0 ; i < origin_Matrix.length; ++i)
{
System.arraycopy(origin_Matrix[i], 0, copy[i], 0, origin_Matrix[i].length);
}
return copy;
}
答案 2 :(得分:1)
您是否有理由使用原语代替Java Collections?如果没有,我会用那些。它们经过优化,并提供了相当强大的API来进行操作。
答案 3 :(得分:0)
@Eden
代码并不完美;你为什么要做i < row-1
首先检查循环?我想你应该做i < row
检查
此外,您不需要明确传递大小。 您可以在数组上使用.length字段来获取它们的大小。