我想将一个小数组复制到一个较大的数组中。例如:
String arr[] = new String[10];
现在我有另一个小阵列
String arr1[] = new String[4];
我想将arr1
复制到arr
而不更改较大的数组长度。即arr
应保持10的长度,并且应成功复制所有元素。
任何人都可以告诉我该怎么做?
答案 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];
}
将完成这项工作。