10

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

String arr[] = new String[10]; 

现在我有另一个小数组

String arr1[] = new String[4];

我想复制arr1arr而不改变更大数组的长度。iearr应该保持长度为 10 并且所有元素的复制都应该成功。

谁能告诉我我该怎么做?

4

5 回答 5

36

尝试这个:

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)));
于 2012-06-22T15:19:32.380 回答
6

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

   for(int i = 0; i < arr1.length(); ++i) {
      arr[i] = arr1[i];
    }
于 2012-06-22T15:18:18.157 回答
3

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

for (int i = 0; i < 4; i++) arr[i] = arr1[i];
于 2012-06-22T15:17:25.150 回答
1

如果要保留arr超出arr1do 长度的值:

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

如果要重置arr超出arr1do 长度的值:

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
    }
}
于 2012-06-22T15:20:57.777 回答
0
for (int i = 0; i < 4; i++) 
{
arr[i] = arr1[i];
}

将完成这项工作。

于 2012-06-22T15:22:19.013 回答