Раздел копирования Java массива

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

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

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

[1,2,3]

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

Ответ 1

Здесь совместимый с 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);

Ответ 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;
}

Ответ 4

int [] myArray = [1,2,3,4,5];

int [] holder = new int[size];

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

где 0 обозначает индекс исходного массива, от которого должно начинаться копирование. и

размер означает количество операций копирования. Что вы можете изменить в соответствии с вашими потребностями.

copyOfRange массивов есть и многие другие способы, которыми это может быть достигнуто.

Ответ 6

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

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

Теперь часть будет: { "two", "three", "four" }

Ответ 7

import java.util.Arrays;

/* in case you want users to enter input you can use this */
public class Solution {
   public static void main(String[] args) throws Exception {
            //write your code here
            int [] smallerOne = new int [10];
            int [] smallerTwo = new int [10];
            int [] numbers = new int [20];
            BufferedReader red = new BufferedReader(new InputStreamReader(System.in));
            for (int i = 0; i < numbers.length; i++){
             int number = Integer.parseInt(red.readLine());
             numbers[i] = number;
            }

            smallerOne = Arrays.copyOf(numbers, 10);
            smallerTwo = Arrays.copyOfRange(numbers, 10,20);

            for (int i=0;i<10;i++)
                System.out.println(smallerTwo[i]);

}
}