将一个小数组复制到一个较大的数组而不更改目标数组的大小

kai*_*aur 8 java

我想将一个小数组复制到一个较大的数组中.例如:

String arr[] = new String[10]; 
Run Code Online (Sandbox Code Playgroud)

现在我有另一个小阵列

String arr1[] = new String[4];
Run Code Online (Sandbox Code Playgroud)

我想复制arr1arr而不改变较大的数组的长度.即arr应该保持10的长度并且应该成功复制所有元素.

谁能告诉我怎么能这样做?

Ted*_*opp 27

试试这个:

System.arraycopy(arr1, 0, arr, 0, arr1.length);
Run Code Online (Sandbox Code Playgroud)

大小arr不会改变(即arr.length == 10仍然是true),但只会改变第一个arr1.length元素.如果您希望将元素arr1复制到arr第一个元素以外的某个位置,只需指定where:

System.arraycopy(arr1, 0, arr, offset, arr1.length);
Run Code Online (Sandbox Code Playgroud)

如果偏移量可能很大,结果将从目标数组的末尾运行,则需要检查以避免异常:

System.arraycopy(arr1, 0, arr, offset,
    Math.max(0, Math.min(arr1.length, arr.length - offset - arr1.length)));
Run Code Online (Sandbox Code Playgroud)


Col*_*n D 5

为了解决这个问题,只需遍历小数组并将它们添加到大数组中即可。

   for(int i = 0; i < arr1.length(); ++i) {
      arr[i] = arr1[i];
    }
Run Code Online (Sandbox Code Playgroud)


Mat*_*tzi 4

这似乎是一个非常简单的问题:

for (int i = 0; i < 4; i++) arr[i] = arr1[i];
Run Code Online (Sandbox Code Playgroud)

  • 不,不会。剩余的项目将保持不变,但数组的长度将相同。 (6认同)