Java 어레이 복제

Farkhanda Athar 2023년10월12일
  1. Java에서 for 루프를 사용하여 Java 배열 수동 복사
  2. Arrays.copyOf()를 사용하여 Java 어레이 복제
  3. Arrays.copyOfRange()를 사용하여 Java 어레이 복제
  4. Object.clone()을 사용하여 Java 배열 복제
  5. System.arraycopy()를 사용하여 Java 어레이 복제
Java 어레이 복제

Java 배열은 다음과 같은 방법으로 다른 배열에 복사할 수 있습니다.

  • 변수 할당 사용: 이 기술은 배열 요소의 변경 사항이 두 위치에 모두 반영되기 때문에 단점이 있습니다.
  • 동일한 크기의 배열을 만들고 모든 요소를 ​​복사합니다.
  • 어레이에 복제 기술을 사용합니다. 복제 방법은 비슷한 크기의 새로운 어레이를 만듭니다.
  • System.arraycopy()기술을 사용하십시오. arraycopy는 배열에서 특정 부분을 복사하는 방법입니다.

Java에서 for 루프를 사용하여 Java 배열 수동 복사

일반적으로 ab와 같은 변수를 복사하려는 순간 다음과 같은 방식으로 복사 작업을 수행합니다.

public class Main {
  public static void main(String[] args) {
    int IArray[] = {24, 45, 56};

    System.out.println("Before assignment the values of IArray[] are:");
    for (int i = 0; i < IArray.length; i++) System.out.print(IArray[i] + " ");

    int CArray[] = new int[IArray.length];

    CArray = IArray;
    CArray[1]++;

    System.out.println("\nElements of IArray[]:");
    for (int i = 0; i < IArray.length; i++) System.out.print(IArray[i] + " ");

    System.out.println("\nElements of CArray[]:");
    for (int i = 0; i < CArray.length; i++) System.out.print(CArray[i] + " ");
  }
}

출력:

Before assignment the values of IArray[] are:
24 45 56 
Elements of IArray[]:
24 46 56 
Elements of CArray[]:
24 46 56 

이 동일한 절차를 어레이에 적용하면 효과가 없습니다.

Arrays.copyOf()를 사용하여 Java 어레이 복제

Arrays.copyOf() 메소드는 System.arraycopy() 프로시저의 내부 사용에 유용합니다. 어레이 복사만큼 효과적이지는 않지만 어레이 복사 방법과 유사하게 어레이의 전체 또는 일부를 복제할 수 있습니다. copyOf() 메소드는 java.util 패키지의 요소이며 Arrays 클래스의 일부입니다. 이 방법의 기본 아이디어는 다음과 같습니다.

public class Main {
  public static void main(String args[]) {
    int[] OArray = new int[] {11, 12, 13};

    System.out.println("Original Arrays elements are");
    for (int i = 0; i < OArray.length; i++) System.out.print(OArray[i] + " ");

    int[] CArray = Arrays.copyOf(OArray, 5);

    CArray[3] = 22;
    CArray[4] = 66;

    System.out.println("\nNew array after copying and modification are:");
    for (int i = 0; i < copy.length; i++) System.out.print(copy[i] + " ");
  }
}

출력:

Original Arrays elements are
11 12 13 
New array after copying and modification are
11 12 13 22 66 

여기,

  • original: 새로 생성된 어레이에 복사될 어레이입니다.
  • newLength: 반환될 복사된 배열의 길이입니다.

따라서 이 메서드는 새 배열을 만들기 위해 0을 추가하여 길이를 채우거나 잘라서 지정된 크기에 대한 첫 번째 인수로 제공된 배열의 정확한 복사본을 만듭니다. 즉, 복사된 배열의 크기가 원래 배열 0에 있던 것보다 크면 나머지 요소가 s로 대체됩니다.

Arrays.copyOfRange()를 사용하여 Java 어레이 복제

Arrays.copyOfRange() 메서드는 특별히 배열의 일부를 복사하도록 설계되었습니다. 유사한 toCopyOf() 메소드는 System.arraycopy() 기술을 사용합니다. Arrays.copyOfRange() 절차의 기본 개념은 다음과 같이 설명할 수 있습니다.

import java.util.Arrays;

class Main {
  public static void main(String args[]) {
    int IArray[] = {100, 200, 300, 400, 500};

    int[] CArray = Arrays.copyOfRange(IArray, 2, 6);
    System.out.println("Array within the index range : " + Arrays.toString(CArray));

    int[] CArray1 = Arrays.copyOfRange(IArray, 4, IArray.length + 3);

    System.out.println("Array copied within the indexed range: " + Arrays.toString(CArray1));
  }
}

출력:

Array within the index range : [300, 400, 500, 0]
Array copied within the indexed range: [500, 0, 0, 0]

여기,

  • original: 복사되는 범위의 배열입니다.
  • from: 복사할 배열의 인덱스 포함.
  • to: 복사할 범위의 인덱스이며 배타적입니다.

Object.clone()을 사용하여 Java 배열 복제

Java 배열은 내부적으로 Cloneable 인터페이스를 구현하므로 Java 배열을 쉽게 복제할 수 있습니다. 1차원 및 2차원 배열을 복제할 수 있습니다. 1차원 배열을 복사하면 값을 복사하는 배열 요소의 광범위한 복제본이 생성됩니다.

반면에 2차원 또는 다차원 배열을 복사하면 요소의 작은 복사본이 생성됩니다. 즉, 유일한 참조 정보가 복사됩니다. 이 복제 프로세스는 어레이에 제공되는 clone() 방법을 사용하여 수행됩니다.

class Main {
  public static void main(String args[]) {
    int NArray[] = {50, 100, 150, 200, 250, 300};

    int CArray[] = NArray.clone();

    System.out.println("Original Num Array are:");
    for (int i = 0; i < NArray.length; i++) {
      System.out.print(NArray[i] + " ");
    }
    System.out.println();

    System.out.println("Cloned Num Array are:");
    for (int i = 0; i < CArray.length; i++) {
      System.out.print(CArray[i] + " ");
    }
    System.out.println("\n");

    System.out.print("NArray == CArray = ");
    System.out.println(NArray == CArray);
  }
}

출력:

Original Num Array are:
50 100 150 200 250 300 
Cloned Num Array are:
50 100 150 200 250 300 

NArray == CArray = false

System.arraycopy()를 사용하여 Java 어레이 복제

Java의 System 클래스는 한 배열에서 다른 배열로 요소를 복사할 수 있는 ArrayCopy라는 옵션을 제공합니다. 이 방법의 가장 일반적인 모델은 다음과 같습니다.

class Main {
  public static void main(String[] args) {
    // declaring a source array
    char[] Oarray = {'I', 'L', 'o', 'v', 'e', 'M', 'y', 'C', 'o', 'u', 'n', 't', 'r', 'y'};

    char[] Farray = new char[14];

    System.arraycopy(Oarray, 0, Farray, 0, 14);
    System.out.println("Origional Array Elements are:" + String.valueOf(Oarray));

    System.out.println("Arrays after copying elements are:" + String.valueOf(Farray));
  }
}

출력:

Origional Array Elements are:ILoveMyCountry
Arrays after copying elements are:ILoveMyCountry

여기,

  • src_array: 항목이 복사되는 소스 배열입니다.
  • src_Pos: 소스 어레이 내의 위치는 복사가 시작되는 지점입니다.
  • dest_array: 요소가 복사될 대상이 있는 배열입니다.
  • dest_Pos: 복사할 항목의 대상 배열에서 시작 위치.
  • length: 복사할 배열의 길이입니다.

관련 문장 - Java Array