配列のセクション (arraylist ではない) をコピーし、そこから新しい配列を作成する方法はありますか?
Example:
[1,2,3,4,5]
そして、それから新しい配列を作成します:
[1,2,3]
これを行う行/方法はありますか?
メソッドを見るArrays.copyOfRange
これは、Java 1.4 互換の 1.5 ライナーです。
int[] array = { 1, 2, 3, 4, 5 };
int size = 3;
int[] part = new int[size];
System.arraycopy(array, 0, part, 0, size);
これは 1 行で実行できますが、結果への参照はありません。
ワンライナーを作成するには、これをメソッドにリファクタリングできます。
private static int[] partArray(int[] array, int size) {
int[] part = new int[size];
System.arraycopy(array, 0, part, 0, size);
return part;
}
次に、次のように呼び出します。
int[] part = partArray(array, 3);
:には既存のメソッドがありjava.util.Arrays
ますnewArray = Arrays.copyOfRange(myArray, startindex, endindex)
。または、独自のメソッドを簡単に作成できます。
public static array[] copyOfRange(array[] myarray, int from, int to) {
array[] newarray = new array[to - from];
for (int i = 0 ; i < to - from ; i++) newarray[i] = myarray[i + from];
return newarray;
}
int [] myArray = [1,2,3,4,5];
int [] holder = new int[size];
System.arraycopy(myArray,0,holder,size);
ここで、0 は、コピーを開始するソース配列のインデックスを表します。と
size は、コピー操作の数を表します。必要に応じて変更できること。
配列のcopyOfRangeがあり、これを実現する他の多くの方法があります
Arrays#copyOfRangeがそのトリックを行います。