小さな配列を大きな配列にコピーしたい。例えば:
String arr[] = new String[10];
今、私は別の小さな配列を持っています
String arr1[] = new String[4];
大きな配列の長さを変更せずにコピーarr1
したい。arr
つまりarr
、長さ 10 を維持し、すべての要素のコピーが正常に行われる必要があります。
どうすればこれを行うことができるか教えてください。
小さな配列を大きな配列にコピーしたい。例えば:
String arr[] = new String[10];
今、私は別の小さな配列を持っています
String arr1[] = new String[4];
大きな配列の長さを変更せずにコピーarr1
したい。arr
つまりarr
、長さ 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
doの長さを超える値を保持したい場合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
doの長さを超える値をリセットする場合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
}
}
for (int i = 0; i < 4; i++)
{
arr[i] = arr1[i];
}
仕事をします。