web-dev-qa-db-ja.com

Java配列のセクションをコピー

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

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

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

[1,2,3]

これを行う1つの行/メソッドはありますか?

18
user1102901

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);
19
Bohemian

メソッドを参照してください Arrays.copyOfRange

24
Jeffrey

_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;
}
_
9
arshajii
int [] myArray = [1,2,3,4,5];

int [] holder = new int[size];

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

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

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

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

5
Javanator

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

4
emboss

他の人が述べたように、Arrays.copyOfRangeメソッドを使用できます。例は:

String[] main = {"one", "two", "three", "four", "five"};
int from = 2;
int to = 4;
String[] part = Arrays.copyOfRange(main, from, to);

これでpartは次のようになります:{"two"、 "three"、 "four"}

3
M-D