> Java > java지도 시간 > 본문

Java의 Arrays.copyOf() 메서드는 배열을 새 배열로 복사하는 방법은 무엇입니까?

王林
풀어 주다: 2023-11-18 13:33:30
원래의
713명이 탐색했습니다.

Java의 Arrays.copyOf() 메서드는 배열을 새 배열로 복사하는 방법은 무엇입니까?

Java의 Arrays.copyOf() 메서드는 어떻게 배열을 새 배열로 복사하나요?

Java에서 배열은 매우 일반적인 데이터 구조이며, Java의 Arrays 클래스는 배열을 처리하는 여러 가지 편리한 방법을 제공합니다. 그 중 Arrays.copyOf() 메서드는 배열을 새 배열로 복사하는 데 매우 유용한 메서드입니다. 이 기사에서는 이 메서드의 사용 및 구현 원리를 소개하고 구체적인 코드 예제를 제공합니다.

Usage

Arrays.copyOf() 메서드에는 원래 배열과 복사 후 새 배열의 길이라는 두 가지 매개 변수가 있습니다. 이 메서드는 새 배열을 만들고 원래 배열의 요소를 새 배열에 복사합니다. 원래 배열의 길이가 새 배열의 길이보다 크거나 같으면 원래 배열의 앞부분이 복사됩니다. 원래 배열의 길이가 새 배열의 길이보다 작으면 원래 배열의 모든 요소가 새 배열에 복사되고 나머지 요소는 배열 요소 유형의 기본값으로 채워집니다.

다음은 Arrays.copyOf() 메서드를 호출하는 예입니다.

int[] arr1 = {1, 2, 3, 4, 5};
int[] arr2 = Arrays.copyOf(arr1, 3) ;

이 예에서는 5개의 요소를 포함하는 정수 배열 arr1을 만듭니다. Arrays.copyOf() 메서드를 호출하여 arr1을 arr2라는 다른 배열에 복사하고 arr2의 길이를 3으로 설정합니다. 배열 arr1의 길이가 5이고 arr2의 길이가 3이므로 Arrays.copyOf() 메서드는 arr1의 처음 3개 요소만 arr2에 복사합니다. 결과적으로 arr2에는 이제 {1, 2, 3}이 포함됩니다.

이것은 Arrays.copyOf() 메서드를 사용하는 가장 기본적인 예일 뿐입니다. 다음으로 좀 더 복잡한 사용법과 예제를 살펴보겠습니다.

2차원 배열 복사

Arrays.copyOf() 메서드는 1차원 배열에 적합할 뿐만 아니라 2차원 배열을 복사하는 데에도 사용할 수 있습니다. 다음 예에서는 Matrix1이라는 2차원 정수 배열을 만들고 Arrays.copyOf() 메서드를 사용하여 이를 Matrix2라는 다른 배열에 복사합니다.

int[][] Matrix1 = {{ 1, 2, 3}, {4, 5, 6}};
int[][] 행렬2 = Arrays.copyOf(matrix1, 2);

이 예에서는 행렬1을 행렬2에 복사하고 행렬2의 길이는 2로 설정됩니다. Matrix1은 2차원 배열이고 Arrays.copyOf() 메서드는 1차원 배열만 복사할 수 있으므로 길이가 2인 새로운 2차원 배열을 만들고 그 첫 번째 요소는 행렬1 행의 첫 번째 요소입니다. , 두 번째 요소는 행렬1의 두 번째 행입니다. 이런 방식으로 하나의 2D 배열을 다른 배열로 복사할 수 있습니다.

특정 배열 범위 복사

어떤 경우에는 원본 배열에서 특정 범위의 요소만 복사하고 싶을 수도 있습니다. Arrays.copyOfRange() 메소드는 복사를 시작하고 종료할 원본 배열의 인덱스를 지정할 수 있는 매우 유용한 메소드입니다. 다음은 Arrays.copyOfRange() 메서드의 예입니다.

int[] arr1 = {1, 2, 3, 4, 5};
int[] arr2 = Arrays.copyOfRange(arr1, 1, 4);

이 예에서는 5개의 요소가 포함된 arr1이라는 정수 배열을 만듭니다. Arrays.copyOfRange() 메서드를 호출하고 이를 arr2에 할당합니다. arr1을 첫 번째 매개변수로 메서드에 전달하고 1과 4를 두 번째와 세 번째 매개변수로 전달합니다. 이는 arr1의 인덱스 1(즉, 두 번째 요소)부터 인덱스 4(즉, 다섯 번째 요소)까지만 복사하고 인덱스 4는 포함하지 않는다는 의미입니다. 결과적으로 arr2에는 이제 {2, 3, 4}가 포함됩니다.

Arrays.copyOfRange() 메서드는 원본 배열의 일부만 복사하므로 이런 방식으로 원본 배열에서 특정 범위의 요소를 복사할 수 있습니다.

구현 원칙

Arrays.copyOf() 메서드는 실제로 System.arraycopy() 메서드를 단순화한 구현입니다. System.arraycopy() 메서드는 배열 간 요소를 복사하는 Java의 가장 빠른 메서드 중 하나이며 Arrays.copyOf() 메서드보다 유연성과 성능이 더 높습니다. 또한 System.arraycopy() 메서드는 Arrays.copyOf() 메서드의 기본 구현 메서드이기도 합니다.

다음은 Arrays.copyOf() 메서드의 소스 코드 구현입니다.

public static T[] copyOf(T[] 원본, int newLength) {

return (T[]) copyOf(original, newLength, original.getClass());
로그인 후 복사

}

public static < T,U> ; T[] copyOf(U[] 원본, int newLength, Class newType) {

@SuppressWarnings("unchecked")
T[] copy = ((Object)newType == (Object)Object[].class)
    ? (T[]) new Object[newLength]
    : (T[]) Array.newInstance(newType.getComponentType(), newLength);
System.arraycopy(original, 0, copy, 0,
                 Math.min(original.length, newLength));
return copy;
로그인 후 복사

}

코드 구현에서 볼 수 있듯이 배열의 첫 번째 줄은 .copyOf() 메소드 copyOf() 메소드의 오버로드된 버전이 호출되고 메소드에서 반환된 결과가 호출자에게 반환됩니다. 이 메서드는 원본 배열과 새 배열의 길이를 매개 변수로 받아들이고 이를 두 번째 copyOf() 메서드에 전달합니다.

두 번째 copyOf() 메서드는 다음 단계를 수행하여 새 배열을 만들고 요소를 복사합니다.

  • newType 매개변수를 사용하여 새로운 일반 배열을 만듭니다.
  • 원래 배열의 구성 요소 유형을 사용하여 새 배열을 만듭니다(newType이 Object[]가 아닌 경우).
  • System.arraycopy() 메서드를 사용하여 원래 배열의 요소를 새 배열에 복사합니다.
  • 새로 복사한 배열을 반환합니다.

Arrays.copyOf() 메서드의 구현은 System.arraycopy() 메서드에 의존하므로 두 가지 다른 유형에 걸쳐 있는 배열을 복사하지 않는 등 이 메서드의 규칙과 제한 사항을 따릅니다.

요약

Arrays.copyOf() 메서드는 Java에서 배열을 복사하는 편리한 방법입니다. 이 메서드를 사용하면 신속하게 새 배열을 만들고 원본 배열의 요소를 새 배열에 복사할 수 있습니다. 이 방법을 사용하면 1차원 및 2차원 배열을 복사할 수 있을 뿐만 아니라 특정 범위의 요소를 복사할 수도 있습니다. Arrays.copyOf() 메서드의 구현은 System.arraycopy() 메서드를 기반으로 하므로 동일한 규칙과 제한 사항이 있습니다. 배열을 다룰 때 Arrays 클래스는 배열을 보다 쉽게 ​​처리하고 조작하는 데 도움이 되는 매우 유용한 도구입니다.

위 내용은 Java의 Arrays.copyOf() 메서드는 배열을 새 배열로 복사하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!