我想将一个小数组复制到一个更大的数组中。例如:
String arr[] = new String[10];
现在我有另一个小数组
String arr1[] = new String[4];
我想复制arr1
到arr
而不改变更大数组的长度。iearr
应该保持长度为 10 并且所有元素的复制都应该成功。
谁能告诉我我该怎么做?
我想将一个小数组复制到一个更大的数组中。例如:
String arr[] = new String[10];
现在我有另一个小数组
String arr1[] = new String[4];
我想复制arr1
到arr
而不改变更大数组的长度。iearr
应该保持长度为 10 并且所有元素的复制都应该成功。
谁能告诉我我该怎么做?
尝试这个:
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)));
为了解决这个问题,只需遍历小数组并将它们添加到更大的数组中。
for(int i = 0; i < arr1.length(); ++i) {
arr[i] = arr1[i];
}
这似乎是一个非常简单的问题:
for (int i = 0; i < 4; i++) arr[i] = arr1[i];
如果要保留arr
超出arr1
do 长度的值:
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
do 长度的值:
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
}
}
for (int i = 0; i < 4; i++)
{
arr[i] = arr1[i];
}
将完成这项工作。