Эффективное копирование двумерного массива в Java
При работе с двумерными массивами часто необходимо создать копию исходный массив, чтобы сохранить его исходные значения. Однако прямое присвоение, такое как old = current, может привести к непредвиденным последствиям.
Понимание назначения массивов в Java
В Java массивы являются объектами, а присваивания между массивами являются ссылками. в тот же базовый массив. Таким образом, обновление одного массива влияет на другой, поскольку они оба указывают на одни и те же данные.
Неправильные методы копирования
Предоставленные методы old() и Keepold(), просто назначьте ссылки на массивы. В результате, когда текущий обновляется после вызова old(), изменения также отражаются в old. Аналогично, после вызова функции keepold() текущий становится ссылкой на старый, а любые обновления — на старый текущий.
Эффективное копирование с помощью Streams API (Java 8)
Чтобы создать настоящую копию массива, необходимо выполнить глубокую копию. API потоков, представленный в Java 8, обеспечивает эффективный способ достижения этой цели с помощью следующего кода:
int[][] copy = Arrays.stream(matrix).map(int[]::clone).toArray(int[][]::new);
Здесь каждая строка входного массива (матрицы в этом примере) клонируется с помощью карты (int[]::clone), создание нового массива для каждой строки. Результирующий поток клонированных массивов затем преобразуется обратно в двумерный массив с помощью toArray(int[][]::new). Этот процесс гарантирует, что копия и исходный массив различны и могут быть изменены независимо.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3