配列内に要素を挿入したい。サイズ5のarray1が1つあります(すべてのインデックスがいっぱいです)。サイズ6のarray2をもう1つ作成し、array1のすべての要素をarray2内に挿入しました。ここで、array2の3番目の位置に要素を挿入して、3番目の位置にある要素が4番目に移動し、4番目が5番目に移動し、5番目が6に移動するようにします。
私は以下のプログラムを開発しました。ただし、文字列インデックスが範囲外の例外を取得しています。この問題を解決するのを手伝ってください。
配列内に要素を挿入したい。サイズ5のarray1が1つあります(すべてのインデックスがいっぱいです)。サイズ6のarray2をもう1つ作成し、array1のすべての要素をarray2内に挿入しました。ここで、array2の3番目の位置に要素を挿入して、3番目の位置にある要素が4番目に移動し、4番目が5番目に移動し、5番目が6に移動するようにします。
私は以下のプログラムを開発しました。ただし、文字列インデックスが範囲外の例外を取得しています。この問題を解決するのを手伝ってください。
System.arraycopy(...)
メソッドはあなたのヘルパーです。残りは自分で行います。
残念ながら、配列はこのタスクに最適ではありません。配列にバインドする必要がない場合は、List (ArrayList) を使用することをお勧めします。また、toArray() メソッドもあります。
ここにチュートリアルがありますが、他にも多数のチュートリアルがあります: http://www.java-samples.com/showtutorial.php?tutorialid=234
私はあなたに何かを急いで鞭打ちました。
public int[] insert(final int[] array, final int index, final int...nums){
if(nums.length == 0){
return array;
}
int[] newArray = new int[array.length + nums.length];
int i = 0;
for(; i < index; i++){
newArray[i] = array[i];
}
for(int j = 0; j < nums.length; j++){
newArray[i + j] = nums[j];
}
for(; i < array.length; i++){
newArray[i + nums.length] = array[i];
}
return newArray;
}
個人的には System.arraycopy を避けるようにしています。こちらの方がより良いフローを簡単に確認できるからです。他の誰かのコードに頼るよりも、それがどのように機能するかを見ることができれば、より有益です。
配列の途中に挿入する必要があり、そのサイズを動的に変更する場合は、LinkedList コレクションを使用することをお勧めします。