Есть ли способ, который скопирует раздел массива (не arraylist) и выведет из него новый массив?
Example:
[1,2,3,4,5]
и вы создаете из него новый массив:
[1,2,3]
Есть ли одна строка/методы, которые будут делать это?
Есть ли способ, который скопирует раздел массива (не arraylist) и выведет из него новый массив?
Example:
[1,2,3,4,5]
и вы создаете из него новый массив:
[1,2,3]
Есть ли одна строка/методы, которые будут делать это?
Здесь совместимый с 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 обозначает индекс исходного массива, от которого должно начинаться копирование. и
размер означает количество операций копирования. Что вы можете изменить в соответствии с вашими потребностями.
copyOfRange массивов есть и многие другие способы, которыми это может быть достигнуто.
Массивы # copyOfRange делает трюк.
Как указывали другие, вы можете использовать метод 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" }
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]);
}
}