1 분 소요

copyOf / copyOfRange / arraycopy

Array.copyOf

Arrays의 메서드를 활용하여 배열을 복사

Arrays.copyOf(원본배열, 원본 배열에서 복사해올 길이)
package array;

import java.util.Arrays;

public class ArrayCopy {

	public static void main(String[] args) {
		int[] arr1 = new int[]{1, 2, 3, 4, 5};

		// Arrays 클래스의 copyOf() 메소드
		int[] arr2 = Arrays.copyOf(arr1, 10); // 복사할 배열, 복사할 배열의 크기
		
		for(int i =0; i < arr2.length; i++) 
			System.out.print(arr2[i] + " ");
	}

}

Array.copyOfRange

자신이 복사하고자 하는 배열의 범위만 지정해서 복사

Array.copyOfRange(원본배열, 복사 시작점, 복사  인덱스-1)
package array;

import java.util.Arrays;

public class ArrayCopy {

	public static void main(String[] args) {
		int[] arr1 = new int[]{1, 2, 3, 4, 5};

		// Arrays 클래스의 copyOf() 메소드
		int[] arr2 = Arrays.copyOfRange(arr1, 0, 3); 
		// 복사할 배열, 복사 시작 인덱스, 복사 끝 인덱스(-1) - 즉, 0~2까지 1,2,3을 복사
		
		for(int i =0; i < arr2.length; i++) 
			System.out.print(arr2[i] + " ");
	}

}

System.arraycopy

자신이 복사하고자 하는 배열의 범위만 지정해서 복사

System.arraycopy(원본배열, 원본 배열의 복사 시작 지점, 배열2, 배열2의 복사 시작 지점, 복사 길이)
String[] oldArr = {"aa", "bb", "cc"};
String[] newArr = new String[5];

System.arraycopy(oldArr, 0, newArr, 0, oldArr.length);
// String[] 배열의 초기값은 null이므로 newArr의 4,5번째 항목은 null 이다.




차이점

  • System.arraycopy() 메서드는 Arrays에서 제공되는 메서드와 달리 System에 포함된 메서드로 따로 import가 필요하지 않다.
  • Arrays.copyOf : 전부 복사하거나 복사 대상의 객체를 유지시킬 필요가 없을 때 추천.
  • System.arraycopy() : 복사 길이를 명시해야 하거나, 객체를 유지하고자 할 때 추천.
  • Arrays.copyOf 가 System.arraycopy() 보다 2배 가량 빠르다.

카테고리: ,

업데이트:

댓글남기기