ホームページ  >  記事  >  Java  >  Java で 2D 配列を効率的に複製するにはどうすればよいですか?

Java で 2D 配列を効率的に複製するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-29 07:23:02393ブラウズ

How Do You Efficiently Duplicate a 2D Array in Java?

Java での 2 次元配列の複製

Java で多次元配列を操作する場合、多くの場合、既存の配列のコピーを作成する必要が生じます。このような配列をコピーするための最適なアプローチを理解することは、データの整合性を維持し、落とし穴を避けるために非常に重要です。

指定されたシナリオでは、整数の 2D 配列、行列が編集のためにローカル変数 myInt にコピーされます。目的。手動によるアプローチも可能ですが、エラーが発生しやすく非効率的になる可能性があります。

コピー手法

代わりに、Java では 2D 配列をコピーするための 2 つの推奨手法、clone() または System.arraycopy の使用を提供しています。 ().

clone() の使用

clone() メソッドは配列の浅いコピーを作成します。元の配列とコピーは同じ基礎となる要素を参照します。行列のような 2D 配列の場合、これには以下が含まれます。

<code class="java">int[][] myInt = new int[matrix.length][];
for (int i = 0; i < matrix.length; i++)
    myInt[i] = matrix[i].clone();</code>

このアプローチは単純ですが、要素自体ではなく参照のコピーのみを作成します。行列内の要素が変更されると、myInt 内の対応する要素も影響を受けます。

System.arraycopy() の使用

System.arraycopy() メソッドはディープ コピーを実行し、コピーします。単なる参照ではなく、要素の実際の値。 2D 配列の場合:

<code class="java">int[][] myInt = new int[matrix.length][];
for (int i = 0; i < matrix.length; i++) {
    int[] aMatrix = matrix[i];
    int aLength = aMatrix.length;
    myInt[i] = new int[aLength];
    System.arraycopy(aMatrix, 0, myInt[i], 0, aLength);
}</code>

このメソッドは行ごとに新しい配列を作成するため、もう少し作業が必要ですが、myInt が独立したコピーであることが保証されます。 myInt に加えられた変更は行列には影響しません。

概要

2D 配列を手動でコピーすることは可能ですが、効率を高めるために clone() または System.arraycopy() メソッドを使用することを強くお勧めします。 、正確さ、そして利便性。これにより、コピーされた配列 (myInt) が元の配列 (行列) から適切に分離され、意図しない副作用のリスクなしに独立した変更が可能になります。

以上がJava で 2D 配列を効率的に複製するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。