Java копировать раздел массива

есть ли метод, который скопирует раздел массива (не arraylist) и сделает из него новый массив?

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

и вы создаете из него новый массив:

[1,2,3]

есть ли одна строка / методы, которые сделают это?

6 ответов


вот java 1.4 совместимый 1.5-liner:

int[] array = { 1, 2, 3, 4, 5 };
int size = 3;

int[] part = new int[size];
System.arraycopy(array, 0, part, 0, size);

вы можете сделать это в одной строке, но у вас не будет ссылки на результат.

чтобы сделать однострочный, вы можете преобразовать это в метод:

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

см. Метод Arrays.copyOfRange


существует уже существующий метод в 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 массивов есть и многие другие способы, с помощью которых это может быть достигнуто


массивы#copyOfRange делает трюк.


Как заявили другие, вы можете использовать массивы.способ copyOfRange. Пример :

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

теперь часть будет : {"два", "три", "четыре"}