如何在java中将二维数组从一个复制到另一个

时间:2010-03-31 16:42:19

标签: java

我想知道将二维数组从临时数组复制到原始数组的正确方法是什么。 程序开头的数组大小未知,稍后将设置用户。 这是代码:

  

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]; 

          }
      }
     

}

我知道这是错的,请帮忙......

4 个答案:

答案 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字段来获取它们的大小。