Arrays 클래스 ( java.util.Arrays )
java.util.Arrays 유틸리티 클래스를 사용하면 배열(Array)을 정렬, 복제하거나, List로 변환 하는 등의 작업을 쉽게 처리 할 수 있습니다. 해당 메서드는 클래스 메서드(Class method / Static method)로써 Arrays 클래스의 인스턴스 생성없이 바로 편리하게 사용할 수 있습니다. 그럼 Arrays 메서드 중 자주 사용되는 몇가지 메서드에 대해 알아보겠습니다.
sort() - 정렬
Arrays 클래스의 sort()
메서드를 통해 배열을 오름차순으로 정렬 할 수 있습니다. Comparator,Stream API 등을 통해 내림차순 등 여러가지 방법으로 정렬하는 자세한 내용은 아래 별도 포스팅을 링크를 참조해 주세요.
copyOf() - 복제
copyOf()
메소드는 인자로 전달받은 길이의 새로운 배열을 복사하여 반환합니다. 기존 배열을 초과하는 길이의 데이터는 기본값으로 채워서 반환하게 됩니다. ( primitive type : 기본값 / Reference Type은 null )
int[] intArr = new int[] {1,2,3,4,5};
String[] stringArr = new String[] {"A","C","B","E","D"};
Arrays.copyOf(intArr,3); // int[3] {1,2,3}
Arrays.copyOf(intArr,10); // int[10] {1,2,3,4,5,0,0,0,0,0}
Arrays.copyOf(stringArr,10); // String[10] {A,B,C,D,E,null,null,null,null,null}
copyOfRange() - 복제
copyOfRange()
메서드는 지정한 범위에 해당하는 요소들을 복사하여 새로운 배열을 반환해 줍니다.
/*
* static <T> T[] copyOfRange(T[] original, int from, int to);
* arr[from]~arr[to-1]의 까지 잘라서 복제
* 길이 to-from 의 배열이 생성되고 남는건 기본값으로 채움!
*/
int[] intArr = new int[] {1,2,3,4,5};
String[] stringArr = new String[] {"A","C","B","E","D"};
Arrays.copyOfRange(intArr,0,3); // 1 2 3
Arrays.copyOfRange(intArr,2,4); // 3 4
Arrays.copyOfRange(intArr,0,10); // 1 2 3 4 5 0 0 0 0 0
Arrays.copyOfRange(stringArr,0,3); // A B C
Arrays.copyOfRange(stringArr,2,4); // C D
Arrays.copyOfRange(stringArr,0,10); // A B C D E null null null null null
fill() - 채우기
fill()
메서드를 사용하면 배열의 요소를 특정 값으로 채울 수 있습니다.
/*
* static void fill(Object[] a, Object val)
*/
int[] intArr = new int[] {1,2,3,4,5};
String[] stringArr = new String[] {"A","C","B","E","D"};
Arrays.fill(intArr,7); // 7 7 7 7 7
Arrays.fill(stringArr,"A"); // A A A A A
Reference
위에서 소개한 메서드 이외에도 배열내 데이터 검색을 위한 binarySearch(), 배열의 특정 범위를 반환하는 spliterator(), 배열을 비교하는 equals() 등 배열 관련된 다양한 유틸성 메소드를 지원하니 API 문서를 읽어 보시길 한 번 보시길 추천드립니다!
'Program > Java' 카테고리의 다른 글
[Java] StringBuilder,StringBuffer 초기화 최적의 방법은? (1) | 2022.01.11 |
---|---|
[Java] Array, ArrayList 차이점 (0) | 2021.08.30 |
[Java] void Method 종료 하기 (0) | 2021.03.08 |
[Java] 클래스 정보 가져오기 (Class 이름 출력) (0) | 2020.11.28 |
[Java] 중첩 반복문 break ( 이중 for문 break ) (1) | 2020.09.15 |