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

如何深度复制二维数组(不同的行大小)

刘承悦
2023-03-14
问题内容

这是我在这样的社区中提出的第一个问题,因此,我的问题形式可能对此并不十分抱歉。

现在,我的问题是我想在Java中深度复制2维数组。在固定尺寸的行和列的一维甚至二维数组中进行操作非常容易。我的主要问题是我无法为尝试复制的第二个数组进行初始化,例如:

int[][] copyArray = new int[row][column]

因为行大小不是固定的,并且每个行的索引都发生了变化,例如我尝试复制此数组:

int[][] envoriment = {{1, 1, 1, 1}, {0, 1, 6}, {1}};

所以你看,如果我说new int[3][4]会有多余的空间我不想要。有没有一种方法可以深度复制这种二维数组?


问题答案:

我认为您的意思是列大小不是固定的。无论如何,一个简单直接的方法是:

public int[][] copy(int[][] input) {
      int[][] target = new int[input.length][];
      for (int i=0; i <input.length; i++) {
        target[i] = Arrays.copyOf(input[i], input[i].length);
      }
      return target;
}


 类似资料:
  • 问题内容: 我想使用自己的Node类在Java中实现树结构。但是我很困惑如何进行深层复制来复制树。 我的Node类将是这样的: 我是递归的新手,所以有什么我可以学习的代码吗?谢谢! 问题答案: 尝试

  • 问题内容: 我正在使用使用Strings的二维数组的程序(一开始可能不是很聪明,但是eh),并且我想编写一个采用这些数组之一的函数(比方说array1),一个独立的副本,并返回它(假设为array2)。但是,当我然后更改array2中的值时,它似乎反映在array1中。 我的函数当前看起来像这样: 我声明一个新的字符串数组,然后对其进行迭代,分别复制每个值。当这不起作用时,我什至尝试从每个旧字符串

  • 问题内容: 我需要为正在进行的项目制作一个相当大的二维数组的副本。我有两个2D阵列: 我也有两种方法来进行复制。我需要复制数组,因为当前会定期更新。 和 但是,这不起作用。如果我叫old,对current进行更新,然后再调用keepold,则current不等于原来的值。为什么会这样呢? 谢谢 问题答案: 或使两个数组引用相同的东西,因此,如果你随后修改,也会被修改。要将一个数组的内容复制到另一个

  • 定义为一维数组,定义为二维数组,但这一行为是两个夜晚。原因是什么? 以及该代码的输出:

  • 本文向大家介绍JavaScript 数组的深度复制解析,包括了JavaScript 数组的深度复制解析的使用技巧和注意事项,需要的朋友参考一下 对于javascript而言,数组是引用类型,如果要想复制一个数组就要动脑袋想想了,因为包括concat、slice在内的函数,都是浅层复制。也就是说,对于一个二维数组来说,用concat来做复制,第二维的数组还是引用,修改了新数组同样会使旧数组发生改变。

  • 问题内容: 我只是有一个想法可以测试一些东西,并且有效: 输出显然是: 所以我的问题是: 这是好是坏的编码风格? 这有什么好处? 最重要的是,是否可以在声明本身中创建这样的构造? 另外…为什么甚至有可能做? 问题答案: 这是好是坏的编码风格? 像任何东西一样,这取决于情况。在某些情况下, 锯齿状数组 (称为它们)实际上是适当的。 这有什么好处? 好吧,用于将不同长度的数据集存储在一个数组中。例如,