Heim > Java > javaLernprogramm > Hauptteil

Wie kann ich in Java eine echte Kopie eines 2D-Arrays erstellen, ohne das ursprüngliche Array zu ändern?

Susan Sarandon
Freigeben: 2024-10-31 11:58:31
Original
588 Leute haben es durchsucht

How can I create a true copy of a 2D array in Java without modifying the original array?

Kopieren von zweidimensionalen Arrays in Java

Bei der Arbeit mit mehrdimensionalen Arrays in Java ist es oft notwendig, eine Kopie des Arrays zu erstellen Vermeiden Sie unerwartete Änderungen am ursprünglichen Array. Durch das Erstellen einer Kopie wird sichergestellt, dass das ursprüngliche Array unberührt bleibt, während die Kopie frei geändert werden kann, ohne das Original zu beeinträchtigen.

Stellen Sie sich das folgende Szenario vor, in dem zwei 2D-Arrays, das aktuelle und das alte, deklariert und zwei Hilfsmethoden definiert werden :

<code class="java">int[][] current;
int[][] old;

public void old() {
  old = current;
}

public void keepold() {
  current = old;
}</code>
Nach dem Login kopieren

Beim Aufruf von old() wird die Referenz auf das aktuelle Array dem alten Array zugewiesen. Ebenso wird beim Aufruf von keepold() der Verweis auf das alte Array dem aktuellen Array zugewiesen. Durch diese einfache Zuordnung wird jedoch keine Kopie der tatsächlichen Daten erstellt. Stattdessen teilt es lediglich dieselben Verweise auf dieselben zugrunde liegenden Daten.

Dieses Verhalten kann zu Verwirrung führen, wenn Aktualisierungen an einem der Arrays vorgenommen werden. Wenn beispielsweise eine Aktualisierung von „current“ durchgeführt und dann „keepold()“ aufgerufen wird, verweist das aktuelle Array nun auf dieselben Daten wie „old“. Infolgedessen verändern alle weiteren Änderungen an der alten Version auch die aktuelle Version, was nicht das beabsichtigte Verhalten ist.

Um eine echte Kopie eines 2D-Arrays in Java zu erstellen, muss eine Technik namens Deep Copying eingesetzt werden. Dabei wird ein neues 2D-Array erstellt und der Inhalt des ursprünglichen Arrays Element für Element hineinkopiert. Dies kann mithilfe einer verschachtelten Schleife erreicht werden.

Alternativ kann ab Java 8 die Streams-API verwendet werden, um eine präzisere und effizientere Möglichkeit zum Durchführen von Deep Copy von mehrdimensionalen Arrays bereitzustellen:

<code class="java">int[][] copy = Arrays.stream(matrix).map(int[]::clone).toArray(int[][]::new);</code>
Nach dem Login kopieren

In diesem Code erstellt Arrays.stream(matrix) einen Stream der Zeilen im ursprünglichen Array. Die Operation „map(int[]::clone)“ erstellt mit der Methode „clone()“ ein neues Array für jede Zeile. Schließlich kombiniert die toArray(int[][]::new)-Operation die geklonten Zeilen zu einem neuen 2D-Array. Dieses resultierende Array ist eine echte Kopie und kann geändert werden, ohne dass sich dies auf das ursprüngliche Array auswirkt.

Das obige ist der detaillierte Inhalt vonWie kann ich in Java eine echte Kopie eines 2D-Arrays erstellen, ohne das ursprüngliche Array zu ändern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!