首頁  >  文章  >  Java  >  如何在 Java 中建立二維數組的真實副本而不產生意想不到的後果?

如何在 Java 中建立二維數組的真實副本而不產生意想不到的後果?

Barbara Streisand
Barbara Streisand原創
2024-10-30 19:27:02978瀏覽

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() 後更新 current 時,變更也會反映在 old 中。類似地,在呼叫 keepold() 後,current 成為對 old 的引用,並且對 old 的任何更新都會更新 current。

使用 Streams API 進行有效複製 (Java 8 )

要建立陣列的真實副本,需要執行深複製。 Java 8 中引入的流API 提供了一種有效的方法來實現此目的,使用以下程式碼:

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

這裡,輸入數組(本例中為矩陣)的每一行都使用map( int[] 進行克隆::clone),為每一行建立一個新數組。然後使用 toArray(int[][]::new) 將產生的克隆數組流轉換回二維數組。這個過程確保副本和原始數組是不同的,並且可以獨立修改。

以上是如何在 Java 中建立二維數組的真實副本而不產生意想不到的後果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn