10

小さな配列を大きな配列にコピーしたい。例えば:

String arr[] = new String[10]; 

今、私は別の小さな配列を持っています

String arr1[] = new String[4];

大きな配列の長さを変更せずにコピーarr1したい。arrつまりarr、長さ 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

arrdoの長さを超える値を保持したい場合arr1:

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

arrdoの長さを超える値をリセットする場合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
    }
}
于 2012-06-22T15:20:57.777 に答える
0
for (int i = 0; i < 4; i++) 
{
arr[i] = arr1[i];
}

仕事をします。

于 2012-06-22T15:22:19.013 に答える