본문 바로가기

프로그래밍/Java

[Java] 배열 자르기

배열 자르기

오늘은 자바에서 배열이 하나 주어졌을 때 시작 인덱스와 마지막 인덱스 범위만큼 배열을 자르는 방법을 소개하고자 한다.

 

예를 들어 1부터 10까지 값을 가지는 배열에서 시작 인덱스를 3으로, 마지막 인덱스를 7로 주어 다음과 같은 결과를 얻고자 한다.

 

기존 배열 : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
시작 인덱스 : 3
마지막 인덱스 : 7
특정 범위의 배열 : [4, 5, 6, 7]

 

1. System클래스의 arraycopy 메소드

 System 클래스에서 제공하는 arraycopy() 메소드를 활용하여 특정 위치부터 특정 개수만큼 새로운 배열에 값을 할당할 수 있다.

 

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

 

매개변수

A : 원본 배열

 

B : 원본 배열에서 시작할 위치

 

C : 새로운 배열

 

D : 새로운 배열의 시작 위치     

- 0으로 설정하는 경우 복사한 데이터가 새로운 배열의 인덱스 0부터 할당된다.

- 3으로 설정하는 경우 복사한 데이터가 새로운 배열의 인덱스 3부터 할당된다.

 

E : 원본 배열에서 복사되는 데이터 개수

 

코드 예제

int[] srcArray = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int[] destArray = new int[5];

System.arraycopy(srcArray, 3, destArray, 0, 4);

System.out.println("srcArray: " + Arrays.toString(srcArray));
System.out.println("destArray: " + Arrays.toString(destArray));

 

실행 결과

srcArray: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
destArray: [4, 5, 6, 7]

 

2. Arrays클래스의 copyOfRange 메소드

 첫 번째 매개변수로 원본 배열을 전달하고 두 번째 매개변수로 시작 위치, 세번째 매개 변수로 마지막 위치를 전달하여 배열을 자른다.

 

 Arrays.copyOfRange(원본 배열, 시작 위치, 마지막 위치);

 

코드 예제

int[] srcArray = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int[] destArray = Arrays.copyOfRange(srcArray, 3, 7);

System.out.println("srcArray: " + Arrays.toString(srcArray));
System.out.println("destArray: " + Arrays.toString(destArray));

 

실행 결과

srcArray: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
destArray: [4, 5, 6, 7]

 

3. Stream API

자바 1.8버전 이상인 경우 Stream API를 활용하여 특정 범위의 데이터를 가져올 수 있다.

 

코드 예제

int[] srcArray = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int[] destArray = IntStream.range(3, 7).map(num -> srcArray[num]).toArray();

System.out.println("srcArray: " + Arrays.toString(srcArray));
System.out.println("destArray: " + Arrays.toString(destArray));

 

실행 결과

srcArray: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
destArray: [4, 5, 6, 7]

 

'프로그래밍 > Java' 카테고리의 다른 글

[Java] Stream  (0) 2023.04.03
[Java] toString()과 String.valueOf() 차이점  (0) 2022.11.13
[Java] scan.next() 와 scan.nextLine의 차이  (0) 2022.04.14
[Java] Enum  (0) 2022.03.07
[Java] 문자열 배열에 저장하기  (1) 2021.11.28