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

时间:2012-06-22 15:15:58

标签: java

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

String arr[] = new String[10]; 

现在我有另一个小阵列

String arr1[] = new String[4];

我想将arr1复制到arr而不更改较大的数组长度。即arr应保持10的长度,并且应成功复制所有元素。

任何人都可以告诉我该怎么做?

5 个答案:

答案 0 :(得分:27)

试试这个:

System.arraycopy(arr1, 0, arr, 0, arr1.length);

arr的大小不会更改(即arr.length == 10仍为true),但只会更改第一个arr1.length元素。如果您希望将arr1的元素从第一个元素以外的其他位置复制到arr,只需指定位置:

System.arraycopy(arr1, 0, arr, offset, arr1.length);

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

System.arraycopy(arr1, 0, arr, offset,
    Math.max(0, Math.min(arr1.length, arr.length - offset - arr1.length)));

答案 1 :(得分:5)

要解决此问题,只需遍历小数组并将它们添加到更大的数组中。

   for(int i = 0; i < arr1.length(); ++i) {
      arr[i] = arr1[i];
    }

答案 2 :(得分:3)

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

for (int i = 0; i < 4; i++) arr[i] = arr1[i];

答案 3 :(得分:1)

如果您希望将arr中超出arr1长度的值保持为:

for(int i = 0; i < arr1.length(); i++){
    if(i < arr.length()){ // Just in case arr isn't larger
        arr[i] = arr1[i];
    }
}

如果您要重置arr超出arr1长度的值,请执行以下操作:

for(int i = 0; i < arr.length(); i++){
    if(i < arr1.length()){ // Just in case arr isn't larger
        arr[i] = arr1[i];
    } else {
        arr[i] = 0; // Or whatever default value you want here
    }
}

答案 4 :(得分:0)

for (int i = 0; i < 4; i++) 
{
arr[i] = arr1[i];
}

将完成这项工作。