Java - Копирование массивов

{title}

После того, как концепции массива и как заполнить навигацию по ним будут освоены, нам также непременно понадобится сгенерировать копии массивов, поскольку много раз нам нужно будет обрабатывать содержимое указанного массива без изменения оригинала, который мы будем использовать для других целей.
Хотя копирование может показаться очень простым действием, на самом деле это немного сложнее, чем присвоение значения массива другой объявленной переменной этого типа.
Копирование массивов
Как часть логики наших программ, возможно, в какой-то момент нам нужно скопировать массив в другую переменную, чтобы мы могли работать с элементами в другом экземпляре программы, как мы упоминали в начале, и назначаем переменную, содержащую массив По другому это не правильное решение.
Предположим, мы выполняем задание следующим образом:

 varArrar2 = varArray1; 

В этом случае нет синтаксической ошибки, поэтому инструкция работает без проблем, даже если мы попытаемся пройти через varArray2, мы получим значения, которые, как мы знаем, у нас есть в varArray1, они спросят, в чем проблема, проблема в том, что в этой инструкции они сделали Java копировала ссылку на содержимое первого массива, поэтому, если мы внесем изменение в любой из них, мы оба увидим это изменение.
Как мы видим, это не очень эффективный метод, если мы не хотим эффективно копировать ссылку.
Правильный способ скопировать массив

Существует несколько способов скопировать массив, используя цикл, который проходит через первый массив, и присваивая значения второму, используя метод статического arraycopy, который содержится в классе System, и, наконец, используя метод clone. Последний немного более продвинутый, чем мы видим здесь.
Используя цикл
Это самый простой метод из всех, хотя он немного трудоемко выполняет поставленную задачу и позволяет нам получить новый массив, который будет копией оригинала и полностью независим от этого, чтобы сделать эту копию, мы сделаем следующее :

 int [] varArray1 = {2, 3, 1, 5, 10}; int [] varArray2 = new int [varArray1.length]; for (int i = 0; i <varArray1.length; i ++) {varArray2 [i] = varArray1 [i]; } 

Поскольку мы видим, что это очень просто, у нас есть наш первый массив с количеством значений, уже назначенных в его содержимом, мы создаем второй массив и указываем, что его размерность будет равна длине исходного массива и, наконец, с циклом, для которого мы назначены нашему новый массив значение, которое соответствует позиции цикла первого массива.
Использование метода arraycopy
Более простым способом, использующим немного меньше кода, является статический метод arraycopy. Этот метод нарушает соглашение об именах Java, однако работает правильно, чтобы его использовать, мы должны сделать следующее:
 System.arraycopy (varArray1, varArray1_pos, varArray2, varArray2_pos, length); 

Как мы видим в единственной строке, мы решаем проблему, метод получает в своем первом аргументе массив, который мы собираемся скопировать, затем он получает начальную позицию, откуда мы собираемся копировать, затем массив назначения копии, его начальную позицию и, наконец, длина копии:


Наконец, мы увидели, что копирование массива, хотя и не так просто, как присвоение переменной, является относительно простой задачей с использованием методов, описанных в этом руководстве.

  • 0