当前位置: 首页 > 面试题库 >

在Java中复制2D数组

糜雪峰
2023-03-14
问题内容

我有一个二维数组,称为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()