Java 어레이 복제
-
Java에서
for
루프를 사용하여 Java 배열 수동 복사 -
Arrays.copyOf()
를 사용하여 Java 어레이 복제 -
Arrays.copyOfRange()
를 사용하여 Java 어레이 복제 -
Object.clone()
을 사용하여 Java 배열 복제 -
System.arraycopy()
를 사용하여 Java 어레이 복제
Java 배열은 다음과 같은 방법으로 다른 배열에 복사할 수 있습니다.
- 변수 할당 사용: 이 기술은 배열 요소의 변경 사항이 두 위치에 모두 반영되기 때문에 단점이 있습니다.
- 동일한 크기의 배열을 만들고 모든 요소를 복사합니다.
- 어레이에 복제 기술을 사용합니다. 복제 방법은 비슷한 크기의 새로운 어레이를 만듭니다.
System.arraycopy()
기술을 사용하십시오.arraycopy
는 배열에서 특정 부분을 복사하는 방법입니다.
Java에서 for
루프를 사용하여 Java 배열 수동 복사
일반적으로 a
및 b
와 같은 변수를 복사하려는 순간 다음과 같은 방식으로 복사 작업을 수행합니다.
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
: 복사할 배열의 길이입니다.