>  기사  >  Java  >  Java에서 2D 배열의 실제 복사본을 만드는 방법은 무엇입니까?

Java에서 2D 배열의 실제 복사본을 만드는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-31 01:36:02279검색

How to Create a True Copy of a 2D Array in Java?

Java에서 2D 배열 복사

Java에서 2차원(2D) 배열을 복사하는 것은 지속성을 유지하거나 다음과 같은 복사본으로 작업하는 데 필수적일 수 있습니다. 원본 배열에 영향을 주지 않고 수정할 수 있습니다.

주어진 Java 코드에서 발생하는 문제는 old = current 및 current = old가 독립적인 복사본을 생성하는 대신 동일한 2D 배열에 대한 참조를 할당한다는 사실에서 비롯됩니다. 결과적으로 현재에 대한 모든 변경 사항은 이전에도 반영됩니다.

2D 배열의 실제 복사본을 생성하려면 새 배열을 생성하고 각 요소를 여기에 복사해야 합니다. 이는 루프 기반 접근 방식을 사용하거나 Java 8에 도입된 스트림 API를 활용하여 달성할 수 있습니다.

Streams API 메서드:

<code class="java">int[][] copy = Arrays.stream(matrix).map(int[]::clone).toArray(int[][]::new);</code>

이 예에서는 map (int[]::clone)은 행렬 배열의 각 행에 대한 새 복사본을 만듭니다. 그런 다음 toArray(int[][]::new) 메서드는 복사된 행으로 새로운 2D 배열을 생성합니다.

루프 기반 방법:

<code class="java">int[][] copy = new int[current.length][current[0].length];
for (int i = 0; i < current.length; i++) {
  for (int j = 0; j < current[i].length; j++) {
    copy[i][j] = current[i][j];
  }
}</code>

이 접근 방식에서는 현재와 동일한 차원을 가진 새로운 2D 배열(사본)이 생성됩니다. 그런 다음 중첩 루프가 current의 각 요소를 반복하고 해당 값을 copy의 해당 위치에 복사합니다.

복사가 완료되면 old는 복사된 배열(old = copy)에 할당될 수 있고 current는 할당될 수 있습니다. 이전 버전에 영향을 주지 않고 계속 업데이트됩니다.

위 내용은 Java에서 2D 배열의 실제 복사본을 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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