Java で 2 次元配列を効果的にコピーする
2 次元配列を操作する場合、多くの場合、次のコピーを作成する必要があります。元の配列を元の値を保存します。ただし、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) を使用して 2 次元配列に変換されます。このプロセスにより、コピー配列と元の配列の両方が区別され、独立して変更できることが保証されます。
以上が意図しない結果を招くことなく、Java で 2 次元配列の正確なコピーを作成するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。