Home  >  Article  >  Java  >  How to Effectively Copy a 2D Array in Java: `clone()` vs. `System.arraycopy()`

How to Effectively Copy a 2D Array in Java: `clone()` vs. `System.arraycopy()`

DDD
DDDOriginal
2024-10-28 21:23:02114browse

How to Effectively Copy a 2D Array in Java: `clone()` vs. `System.arraycopy()`

How to Copy a 2D Array in Java

Copying a 2D array in Java can be a tricky task. One way to do it is to use loops to manually copy each element from the original array to the new array. However, this can be tedious and error-prone.

A better way to copy a 2D array is to use the clone() method or System.arraycopy().

Using clone

The clone() method creates a new array that is a copy of the original array. To use the clone() method, you can do the following:

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

Using System.arraycopy()

The System.arraycopy() method is another way to copy an array. It takes the following parameters:

  • The source array
  • The starting index in the source array
  • The destination array
  • The starting index in the destination array
  • The number of elements to copy

To use System.arraycopy() to copy a 2D array, you can do the following:

<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>

Both the clone() method and System.arraycopy() are efficient ways to copy a 2D array. However, System.arraycopy() is generally faster and less mistake-prone.

The above is the detailed content of How to Effectively Copy a 2D Array in Java: `clone()` vs. `System.arraycopy()`. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn