본문 바로가기
IT/Java

배열의 부분복사(arraycopy, copyOfRange) (23.07.31)

by 성준하이 2023. 8. 1.
반응형

이전 포스팅에서 배열 자체를 깊은 복사와 얕은 복사로 나뉘어서 카피하는 포스팅을 작성한적이 있다.

배열 자체를 복사하는 포스팅은 자세한 내용은 참고 포스팅 참고 바란다.

 

이번 포스팅에서는 배열의 일부분만 복사를 해오는 함수를 소개한다.

 

1. System 클래스의 arraycopy

2. Array 클래스의 copyOfRange

 

하나씩 사용법을 살펴보면

 

arraycopy
int[] arrays = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int[] test = new int[5];
System.arraycopy(arrays, 2, test, 0, 3);
System.out.println(Arrays.toString(test));

기본 문법은

System.arraycopy(A, B, C, D, E);

이다.

  • A - 원본 배열
  • B - 원본 배열 시작 위치
  • C - 타겟 배열
  • D - 타겟 배열 시작 위치
  • E - 몇개 복사할지.

테스트에서는 arrays의 2번째부터 test의 0번째에 3개를 채운다.

라는 의미이고 결과는

[3,4,5,0,0] 이다.

(빈 배열은 0으로 채워짐.)

 

copyOfRange
int[] arrays = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int[] test2 = Arrays.copyOfRange(arrays, 0, 3);
System.out.println(Arrays.toString(test2));

기본 문법은 

Arrays.copyOfRange(A, B, C);

이다.

  • A - 원본 배열
  • B - 시작 위치
  • C - 마지막 위치

테스트에서 arrays의 0부터 3번째를 복사한다는 의미이다.

arraycopy 보다 설명은 간단하고 필요에 맞게 사용하면 된다.

 


참고 포스팅

https://thenicesj.tistory.com/281

 

배열의 복사(깊은복사, 얕은복사)

포스팅 쓰기 앞서, 이 복사에 대한 개념은 현재 탭인 자바 뿐 아니라 다른 언어에서도 비슷하게 적용이 된다. 그냥 모르고 사용을 하면 위험하니 개념을 알려주기 위해 포스팅을 작성이고 java 탭

thenicesj.tistory.com

 

반응형

'IT > Java' 카테고리의 다른 글

@PathVariable 에 대해서(23.08.03)  (4) 2023.08.04
Arrays 클래스  (81) 2023.08.02
Spring DL 이란?(Dependency Lookup)  (69) 2023.07.30
Spring prototype Bean  (53) 2023.07.29
Spring 에서 Singleton  (51) 2023.07.28

댓글