Создание нового массива с содержимым из старого массива при сохранении старого массива статическим
Скажем, у меня есть массив целых чисел,
int[] array = new int[7];
for(int i = 0; i < 7; i++)
{
array[i] = i;
}
Теперь я хочу получить только первые четыре числа в этом array
и поменять их на другой массив.
Так что я действительно хочу что-то вроде...
newArray = array[0-3].
Я знаю, что синтаксис неверен, но я просто даю общее представление о том, что я пытаюсь сделать, что-то вроде этого возможно? Или мне нужно создать цикл и добавить его вручную в newArray
?
Ответы
Ответ 1
Метод 1
int[] newArr = new int[4];
System.arraycopy(array, 0, newArr, 0, 4);
Метод принимает пять аргументов:
-
src
: исходный массив.
-
srcPosition
: позиция в источнике, откуда вы хотите начать
копирование.
-
des
: целевой массив.
-
desPosition
: позиция в массиве назначения, где копия
должен начаться.
-
length
: количество элементов, которые нужно скопировать.
Этот метод генерирует исключение NullPointerException, если любой из src или des имеет значение null.
Он также генерирует исключение ArrayStoreException в следующих случаях:
- Если src не является массивом.
- Если дес не является массивом.
- Если src и des являются массивами разных типов данных.
Метод 2
Использовать
Arrays.copyOf(array,4)
, чтобы скопировать первые 4 элемента, обрезая остальные.
о
Arrays.copyOfRange(array,1,5)
для копирования элементов 1-4, если вам нужна середина массива.
Ответ 2
int[] newArray = Arrays.copyOf(array,4);
Ответ 3
Вы можете создать новый массив в нужном вам размере (в этом случае 4), а затем использовать System.arrayCopy для копирования содержимого от одного массива к другому.
Ответ 4
Вы можете использовать copyOfRange для этой цели, которая копирует указанный диапазон указанного массива в новый массив.
copyOfRange(byte[] original,
int from,
int to)
Параметры:
original - массив, из которого должен быть скопирован диапазон
from - начальный индекс диапазона для копирования, включительно
to - конечный индекс диапазона для копирования, эксклюзивный. (Этот индекс может находиться вне массива.)