在 Java 中有效複製二維數組
使用二維數組時,通常需要創建原始數組以保留其原始值。然而,像old = current這樣的直接賦值可能會導致意想不到的後果。
理解Java數組賦值
在Java中,數組是對象,數組之間的賦值是引用到同一個底層數組。因此,更新一個數組會影響另一個數組,因為它們都指向相同的資料。
不正確的複製方法
提供的方法,old()和keepold(),只需分配對數組的引用即可。因此,當呼叫 old() 後更新 current 時,變更也會反映在 old 中。類似地,在呼叫 keepold() 後,current 成為對 old 的引用,並且對 old 的任何更新都會更新 current。
使用 Streams API 進行有效複製 (Java 8 )
要建立陣列的真實副本,需要執行深複製。 Java 8 中引入的流API 提供了一種有效的方法來實現此目的,使用以下程式碼:
int[][] copy = Arrays.stream(matrix).map(int[]::clone).toArray(int[][]::new);
這裡,使用map(int[]::clone)克隆輸入數組(本例中的矩陣)的每一行,建立一個新的每行的數組。然後使用 toArray(int[][]::new) 將產生的克隆數組流轉換回二維數組。此過程可確保副本和原始數組是不同的並且可以獨立修改。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3