>  기사  >  Java  >  Java에서 2D 배열을 효율적이고 안전하게 복사하는 방법은 무엇입니까?

Java에서 2D 배열을 효율적이고 안전하게 복사하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-01 12:42:02266검색

How to Efficiently and Safely Copy a 2D Array in Java?

Java에서 2D 배열을 복사하는 방법

질문:

2D 배열이 있습니다. 편집을 위해 메서드의 지역 변수에 복사하려는 행렬이라는 배열입니다. 완전한 사본을 생성하는 가장 효율적이고 오류 없는 방법은 무엇입니까?

답변:

Java에서 2D 배열을 복사하는 데 권장되는 두 가지 방법이 있습니다.

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>

System.arraycopy() 사용:

System.arraycopy() 메서드는 다음과 같습니다. 2차원 배열을 복사하는데 사용됩니다. 새 배열을 생성하고 각 요소를 수동으로 복사해야 합니다.

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

장점:

두 방법 모두 배열을 수동으로 복사하는 것보다 더 빠르고 오류가 발생할 가능성이 적습니다. System.arraycopy()는 네이티브 코드로 구현되기 때문에 특히 효율적입니다.

참고:

경우에 따라 배열의 얕은 복사본만 필요할 수도 있습니다. , 여기서 복사본의 수정된 요소는 원본 배열에 반영됩니다. 얕은 복사본의 경우 간단히 배열을 직접 할당할 수 있습니다(예: int[][] myInt = Matrix;). 단, 편집 목적으로는 권장하지 않습니다.

위 내용은 Java에서 2D 배열을 효율적이고 안전하게 복사하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.