21

配列のセクション (arraylist ではない) をコピーし、そこから新しい配列を作成する方法はありますか?

Example:
[1,2,3,4,5]

そして、それから新しい配列を作成します:

[1,2,3]

これを行う行/方法はありますか?

4

6 に答える 6

27

メソッドを見るArrays.copyOfRange

于 2012-05-02T23:31:55.827 に答える
23

これは、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);
于 2012-05-02T23:38:42.207 に答える
9

:には既存のメソッドがあり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;
}
于 2012-05-02T23:37:01.427 に答える
6
int [] myArray = [1,2,3,4,5];

int [] holder = new int[size];

System.arraycopy(myArray,0,holder,size);

ここで、0 は、コピーを開始するソース配列のインデックスを表します。と

size は、コピー操作の数を表します。必要に応じて変更できること。

配列のcopyOfRangeがあり、これを実現する他の多くの方法があります

于 2012-05-02T23:36:44.540 に答える
5

Arrays#copyOfRangeがそのトリックを行います。

于 2012-05-02T23:32:59.637 に答える