«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как создать настоящую копию двумерного массива в Java без непредвиденных последствий?

Как создать настоящую копию двумерного массива в Java без непредвиденных последствий?

Опубликовано 17 ноября 2024 г.
Просматривать:191

How do you create a true copy of a two-dimensional array in Java without unintended consequences?

Эффективное копирование двумерного массива в 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