Java での 2 次元配列の効果的なコピー
2 次元配列を操作する場合、多くの場合、次のコピーを作成する必要があります。元の配列を元の値を保存します。ただし、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) を使用して 2 次元配列に変換されます。このプロセスにより、コピー配列と元の配列の両方が区別され、独立して変更できることが保証されます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3