Создание нового массива с содержимым из старого массива при сохранении старого массива статическим

Скажем, у меня есть массив целых чисел,

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 - конечный индекс диапазона для копирования, эксклюзивный. (Этот индекс может находиться вне массива.)